【发布时间】:2015-07-31 11:20:32
【问题描述】:
我在另一篇帖子Index of duplicates items in a python list 中看到了这个解决方案,其中清楚地表明使用下面的代码,您可以获得列表中重复元素的索引位置。
[[], [], [], [], [], [], 2, 3, 4, 5, 3, 4, 5, 4, 5, 5, 1, 6, 7, 7, 6、1、7、6、1、1、5、4、3、2、2、0]
def duplicates(lst, item):
return [j for j, x in enumerate(lst) if x == item]
print(duplicates(XORcomb, 2)))
输出
[6, 29, 30]
但是,如果我尝试迭代该过程,它不起作用。
N = [1, 2, 3, 4, 5]
def duplicates(lst, item):
return [i for i, x in enumerate(lst) if x == item]
for each in N:
print("%r occurs at: %r " %(each, duplicates(XORcomb, each)))
输出
'1' 出现在:[]
'2' 出现在:[]
'3' 出现在:[]
'4' 出现在:[]
'5' 出现在:[]
如果列表 N 是预定义的,它可以正常工作。但是如果列表 N 是用户定义的,那么它就不起作用了。
n = int(input("Enter number of values: ")) #Get user input for no. of values
N = []
for e in range (1, n+1):
elements = input("Enter element %r: " %e)
N.append(elements)
XORcomb = [[], [], [], [], [], [], 2, 3, 4, 5, 3, 4, 5, 4, 5, 5, 1, 6, 7, 7, 6, 1, 7, 6, 1, 1, 5, 4, 3, 2, 2, 0]
def duplicates(lst, item):
return [j for j, x in enumerate(lst) if x == item]
for each in N:
print("%r occurs at: %r " %(each, duplicates(XORcomb, each)))
【问题讨论】:
-
您正在为每个单独的元素调用该函数。它只是打印元素,然后是一个空列表,因为不可能只有一个元素重复。
-
尝试打印
XORcomb也许它不再有1或2左右。 -
如果我在
XORComb中使用上面的列表,我会得到完全不同的结果,你能检查一下XORComb是不是你认为的那样? -
XORcomb = [[], [], [], [], [], [], 2, 3, 4, 5, 3, 4, 5, 4, 5, 5, 1 , 6, 7, 7, 6, 1, 7, 6, 1, 1, 5, 4, 3, 2, 2, 0]
-
XORcomb 没有改变
标签: python list indexing repeat