如何在python中搜索列表并打印我的条件所在的列表中的哪个位置?

我正在生成一个包含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)    

但是,当我尝试打印时,它没有做我想要的.我一定是误解了它的目的.我对枚举函数的理解是它提供了值所在位置的索引,后跟值;例如:[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
#         ^                                       ^

最后一个小小的说明:

My understanding of the enumerate function is that it provides the index of where the value is located, followed by the value; ex: [0,1], [1,8], [2,6] etc.

你是正确的,除了你的语法似乎表明它发出列表,它发出元组,所以(0,1),(1,8),…但这在这个上下文中是一个小细节.

上一篇:Python篇函数总结【输出函数】


下一篇:16 Python - 循环语句