Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表中重复元素的索引值_Python_List_Indexing_Repeat - Fatal编程技术网

Python 列表中重复元素的索引值

Python 列表中重复元素的索引值,python,list,indexing,repeat,Python,List,Indexing,Repeat,我在另一篇文章中看到了这个解决方案,其中明确指出,使用下面的代码,可以获得列表中重复元素的索引位置 []、[]、[]、[]、[]、[]、[]、2、3、4、5、3、4、5、5、5、1、6、7、7、6、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] 但是

我在另一篇文章中看到了这个解决方案,其中明确指出,使用下面的代码,可以获得列表中重复元素的索引位置

[]、[]、[]、[]、[]、[]、[]、2、3、4、5、3、4、5、5、5、1、6、7、7、6、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)))
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)))
输出

“1”出现在:[]

“2”出现在:[]

“3”出现在:[]

“4”出现在:[]

“5”出现在:[]

如果列表N是预定义的,那么它可以正常工作。但如果列表N是用户定义的,那么它就不起作用

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)))
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)))

问题是
input()
返回的是字符串而不是数字。运行
duplicates()
函数时,比较整数和字符串,得到一个空结果,因为
XORcomb
列表中没有字符串

在将其添加到
N
之前,需要使用
int()
对其进行转换,就像对
N
所做的那样:

>>> XORcomb = [None, None, None, None, None, None, 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]
>>> N = []
>>> n = int(input("Enter number of values: "))

>>> for e in range(0, n):
       element = input("Enter element {}: ".format(str(e + 1)))
       N.append(int(element))


>>> for each in N:
     print("%r occurs at: %r " %(each, duplicates(XORcomb, each)))


1 occurs at: [16, 21, 24, 25] 
2 occurs at: [6, 29, 30] 
3 occurs at: [7, 10, 28] 
4 occurs at: [8, 11, 13, 27] 
5 occurs at: [9, 12, 14, 15, 26] 

您正在为每个单独的元素调用函数。它只是打印元素,然后是一个空列表,因为不可能只有一个元素有一个副本。请尝试打印
XORcomb
,可能它不再有
1
2
左右。如果在
XORcomb
中使用上面的列表,我会得到一个完全不同的结果,你能检查一下XORComb是不是你认为的那样吗?XORComb=[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、2、3、4、4、5、4、5、5、5、1、6、7、7、1、7、6、1、1、5、4、2、2、0]XORComb没有改变染料,我已经尝试过了,而且效果不错。但是,问题是XORcomb随列表N而变化。因此,我需要使用列表N的元素(来自用户的输入),不,它没有。它给出了我在上面的问题中所述的输出。当我运行代码时,它的工作(
针对每个in N:
…)它识别列表中的每个元素,但找不到索引值。请扫描粘贴输出?