【发布时间】:2014-11-17 15:26:52
【问题描述】:
我想在列表中查找某个项目,但列表中可能有超过 1 个该项目,但我想要它以便对列表中的每个项目,它都会做一些事情。
例如:
list = ["1", "1", "2"]
for "1" in list:
print ("hi")
对于列表中的 2 个 '1's,它应该打印两次 'hi'。
【问题讨论】:
标签: python python-3.x for-loop
我想在列表中查找某个项目,但列表中可能有超过 1 个该项目,但我想要它以便对列表中的每个项目,它都会做一些事情。
例如:
list = ["1", "1", "2"]
for "1" in list:
print ("hi")
对于列表中的 2 个 '1's,它应该打印两次 'hi'。
【问题讨论】:
标签: python python-3.x for-loop
你可以使用 count 方法来做到这一点:
lst = ["1", "1", "2"]
for i in range(lst.count("1")):
print "Hi"
一个班轮:
print "Hi\n" * lst.count("1")
注意:我已将变量名 'list' 更改为 'lst' 作为避免 python 关键字覆盖的好习惯。
【讨论】:
您可以使用 python 的内置过滤语法轻松做到这一点:
def hi(number, lst):
for item in (element for element in lst if element == number):
print('hi')
与其他方法相比,此方法的优势在于,如果您愿意,您实际上可以在迭代时对符合您的条件的元素执行某些操作。
用法:
>>>hi(1,[1,1,2])
hi
hi
【讨论】:
[print('hi') for element in lst if item == element],它只是不允许您在不从您的方法创建一个无用的返回列表的情况下执行此操作,或者在这种简单的情况下,或者使用生成器的不必要的冗长for循环。我同意拥有一个不分配列表的map() 会非常方便,它只是执行了迭代+应用方法。或者只是让for 循环几乎与map 或列表推导式一样快。
我认为这是最简单、最易读的语法。它准确地说明了它的作用,不导入任何模块,不调用函数,也不创建临时变量。很容易替换任何比较和任何以item为参数的函数。
for item in lst:
if element == number:
print('hi')
【讨论】: