如何将一个字符串与列表中的下一个字符串进行比较?
我正在编写一个小型 NLP 算法,我需要执行以下操作:
对于列表中的每个字符串 x ["this", "this", "and", "that"]
,如果string x
和下一个字符串相同,我想打印该字符串。
I'm writing a small NLP algorithm and I need to do the following:
For every string x in the list ["this", "this", "and", "that"]
, if the string x
and the next string are identical, I want to print the string.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
有时,我喜欢坚持使用老式循环:
每个人都知道发生了什么而无需太多思考,而且相当有效......
Sometimes, I like to stick with old-fashioned loops:
Everyone knows what's going on without much thinking, and it's fairly efficient...
大多数 Pythonic 是 列表理解,它完全是为循环和测试而构建的同时:
或者,为了避免临时对象(h/t @9000):
Most Pythonic is a list comprehension, which is exactly built for looping and testing at the same time:
Or, to avoid temporary objects (h/t @9000):
为什么不简单呢? :
why not simply ? :
那是作业吗?
Is that homework?
一般来说,如果您正在处理列表中的项目并且需要查看当前项目的邻居,那么您将需要使用
enumerate
,因为enumerate
为您提供当前项目及其在列表中的位置。与使用
zip
的方法不同,此列表理解不需要重复列表:请注意,如果
test
中至少没有两个元素,则它会失败,并且 < code>test 必须是一个列表。 (zip
方法适用于任何可迭代对象。)Generally speaking, if you're processing over items in a list and you need to look at the current item's neighbors, you're going to want to use
enumerate
, sinceenumerate
gives you both the current item and its position in the list.Unlike the approaches that use
zip
, this list comprehension requires no duplication of the list:Note that it fails if there aren't at least two elements in
test
, and thattest
must be a list. (Thezip
approaches will work on any iterable.)这是一种稍微不同的方法,它使用特殊的类来检测序列中的重复。然后,您实际上可以使用简单的列表理解来找到重复项。
Here's a little different approach that uses a special class to detect repeats in a sequence. Then you can actually find the repeats using a simple list comprehension.
使用 stdlib itertoolspairwise() 配方> 文档(我将在这里引用它):
你可以这样做:
或者使用生成器表达式:
Use the recipe for
pairwise()
from the stdlib itertools documentation (I'll quote it here):And you can do:
Or with a generator expression thrown in:
编辑:
作为旁注,如果您使用的是 python 3.X,请使用
range
而不是xrange
EDIT:
Just as a side note, if you are using python 3.X use
range
instead ofxrange