Python 列表中重复元素的索引值
我在另一篇文章中看到了这个解决方案,其中明确指出,使用下面的代码,可以获得列表中重复元素的索引位置 []、[]、[]、[]、[]、[]、[]、2、3、4、5、3、4、5、5、5、1、6、7、7、6、6、1、1、5、4、3、2、2、0]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] 但是
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:
…)它识别列表中的每个元素,但找不到索引值。请扫描粘贴输出?