基本上我想找到并列印所有重復元素的位置。這是我的代碼:
numbers = [7,1,3,6,4,2,5,9,8,10]
n = int(input("Enter a number from 1 to 10 to search for the number's position: "))
def findNum():
count = 0
while numbers[count] != n:
count = 1
numPos = count 1
print(numPos)
if n in numbers:
print("Calculating position... (takes 9 years so wait)")
findNum()
else:
print("Number not found, next time enter a number from 1 to 10!")
例如,我添加了一個額外7的numbers:
numbers = [7,1,3,6,4,2,5,9,8,10,7]
然后我想回傳 1st7的位置和 other7的位置。怎么做?
uj5u.com熱心網友回復:
要獲取所有重復項,請使用字典,其中鍵作為串列中的數字和位置的值,獲取位置使用enumerate:
from collections import defaultdict
numbers = [7, 1, 3, 6, 4, 2, 5, 9, 8, 10, 7]
duplicates = defaultdict(list)
# iterate over positions and numbers simultaneously
for i, number in enumerate(numbers):
# accumulate positions to the same number
duplicates[number].append(i)
result = {key: value for key, value in duplicates.items() if len(value) > 1}
print(result)
輸出
{7: [0, 10]}
正如您從輸出中看到的那樣,它回傳 7 出現在位置 0 和 10 中。這種方法的整體復雜度為 O(n)。
回圈:
# iterate over positions and numbers simultaneously
for i, number in enumerate(numbers):
# accumulate positions to the same number
duplicates[number].append(i)
將不同的位置(i在代碼中)按相同的number. 使用defaultdict.
表達方式:
result = {key: value for key, value in duplicates.items() if len(value) > 1}
是字典理解,請在此處查看更多資訊。
uj5u.com熱心網友回復:
numbers = [7,1,7,6,4,2,5,9,8,10,7]
m=[]
for i in range(len(numbers)):
for j in range(i 1,len(numbers),1):
if(numbers[i]==numbers[j]):
m.append(i)
m.append(j)
l=list(set(m))
for i in range(len(l)):
print("First Occurence at position:{}".format(l[i]))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/322300.html
