[英]How can I search a list in python and print at which location(s) in that list my criteria is located?
我正在生成一个包含12个随机数的列表:
nums = []
for num in range(12):
nums.append(random.randint(1,20))
然后我想搜索“nums”中的特定数字,比如“12”并使用if语句打印,如果它出现在列表中的哪个位置。 像这样的东西:
if len(newNums) == 0:
print('No, 12 is not a part of this integer list')
elif len(newNums) < 2:
print('Yes, 12 is in the list at index', newNums[0])
else:
print('Yes, 12 is in the list at indices', newNums)
在这种情况下,'newNums'是我列出的位置列表,其中'12'在'nums'列表中。
我尝试了几个不同的东西,一个for循环,但没有让我到任何地方,然后我发现这里的东西看起来像这样:
newNums = (i for i,x in enumerate(nums) if x == 12)
但是,当我尝试打印时,它没有做我想要的。 我一定是误解了它的目的。 我对enumerate
函数的理解是它提供了值所在位置的索引,后跟值; 例如: [0,1]
, [1,8]
, [2,6]
等我正在阅读该代码的意思是:在列表中的一对[i,x]
给我i值( nums
)if x == 12
。
在过去的几周里我是python的新手,所以欢迎任何建议。 我可能只是误解了代码的工作原理。
感谢您的时间。
这里唯一的问题是newNums
:
newNums = (i for i,x in enumerate(nums) if x == 12) # a generator
是一个生成器 ,据我所知,你不能在生成器上调用len(..)
并且打印不显示它的元素,而只是它是一个枚举器。
您可以使用列表推导来构建列表。 您所要做的就是用方括号( [..]
)替换圆括号( (..)
):
newNums = [i for i,x in enumerate(nums) if x == 12] # a list
# ^ ^
最后一个小小的说明:
我对
enumerate
函数的理解是它提供了值所在位置的索引,后跟值; 例如:[0,1]
,[1,8]
,[2,6]
等
你是正确的,除了你的语法似乎表明它发出列表 ,它发出元组 ,所以(0,1)
, (1,8)
,...但这在这个上下文中是一个小细节。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.