next() 如何在此 python 代码中工作
How does next() work in this python code
我在这个答案中找到了一些我需要的代码 。但我不明白 next()
在这种情况下 做了什么 。有人可以解释一下吗?
这是我为理解它而制作的简短测试脚本。这个想法是查看测试字符串 txt
是否包含 myset
中的任何字符串,如果包含,是哪一个。它有效,但我不知道为什么。
myset = ['one', 'two', 'three']
txt = 'A two dog night'
match = next((x for x in myset if x in txt), False)
if match: #if match is true (meaning something was found)
print match #then print what was found
else:
print "not found"
我的下一个问题是 next()
是否会给我 match
的索引(或者我需要在 txt
上做 find()
)?
在这里详细说明next的使用方法
match = next((x for x in myset if x in txt), False)
这将 return 由第一个参数中传递的生成器表达式创建的 first/next 值(在本例中为匹配 的实际单词)。如果生成器表达式为空,则 False
将改为 returned。
写代码的人可能只对第一个匹配感兴趣,所以使用了next
。
我们可以使用:
matches = [x for x in myset if x in txt]
并且只需使用 len
来确定命中数。
显示 next
的一些简单用法:
generator = (x for x in myset)
print generator
print next(generator)
print next(generator)
print next(generator)
输出:
<generator object <genexpr> at 0x100720b90>
one
two
three
如果我们尝试在 list/generator 为空时调用 next
,上面的示例将触发 StopIteration
异常,因为我们没有使用第二个参数来覆盖应该是什么return当生成器为空时编辑。
next
真正在幕后做的事情称为类型的 __next__()
方法。在制作 类.
时要记住这一点很重要
有什么不明白的,欢迎大家指正,我会细说的。还要记住,当你不明白发生了什么事时,print
是你的朋友。
我在这个答案中找到了一些我需要的代码 。但我不明白 next()
在这种情况下 做了什么 。有人可以解释一下吗?
这是我为理解它而制作的简短测试脚本。这个想法是查看测试字符串 txt
是否包含 myset
中的任何字符串,如果包含,是哪一个。它有效,但我不知道为什么。
myset = ['one', 'two', 'three']
txt = 'A two dog night'
match = next((x for x in myset if x in txt), False)
if match: #if match is true (meaning something was found)
print match #then print what was found
else:
print "not found"
我的下一个问题是 next()
是否会给我 match
的索引(或者我需要在 txt
上做 find()
)?
在这里详细说明next的使用方法
match = next((x for x in myset if x in txt), False)
这将 return 由第一个参数中传递的生成器表达式创建的 first/next 值(在本例中为匹配 的实际单词)。如果生成器表达式为空,则 False
将改为 returned。
写代码的人可能只对第一个匹配感兴趣,所以使用了next
。
我们可以使用:
matches = [x for x in myset if x in txt]
并且只需使用 len
来确定命中数。
显示 next
的一些简单用法:
generator = (x for x in myset)
print generator
print next(generator)
print next(generator)
print next(generator)
输出:
<generator object <genexpr> at 0x100720b90>
one
two
three
如果我们尝试在 list/generator 为空时调用 next
,上面的示例将触发 StopIteration
异常,因为我们没有使用第二个参数来覆盖应该是什么return当生成器为空时编辑。
next
真正在幕后做的事情称为类型的 __next__()
方法。在制作 类.
有什么不明白的,欢迎大家指正,我会细说的。还要记住,当你不明白发生了什么事时,print
是你的朋友。