列表中的重复条目

时间:2019-05-30 21:59:37

标签: python-3.x

必须输入8个唯一条目,逻辑应检测是否有任何条目重复,否则继续直到输入所有8个条目。

我一直在处理For循环,但似乎没有给我想要的输出,如果要扫描重复的条目,我想返回到最后一个条目,而是显示一条消息“重复扫描,请重新扫描”,但是计数器继续前进。

对不起,我是新来的我以为我已经包含了代码。希望它能经历这段时间。

x=1
mac_list = []
while (x <=8):
    MAC1 = input("SCAN MAC"+str(x)+":")

for place in mac_list:

    print (mac_list)
    if place==MAC1:
        print ("place"+place)
        print ("Duplicate SCAN, please rescan")
else:
    mac_list.append(MAC1)           
    x+=1

3 个答案:

答案 0 :(得分:0)

Python的in比较应该可以满足您的需求:

values = []

while True:
    value = input('Input value: ')

    if value in values:
        print('Duplicate, please try again')

    else:
        values.append(value)

    if len(values) > 7:
        break

print(values)

答案 1 :(得分:0)

这样的东西行不通吗?

集合只能容纳唯一的元素,因此默认情况下会删除所有重复项-这应该解决了您的许多后顾之忧。通过元素比较,这对于较大的数据集应该更好地工作。

entries = set()

while len(entries)<8:
    entries = entries ^ set([input("You do not have enough unique items yet, add another")])

要检测更改,可以有一个旧列表和一个新列表:

entries = set()
new=set()


while True:

    latest = input("You do not have enough unique items yet, add another")
    new = entries ^ set([latest])
    if len(new) == len(entries):
        print("you entered a duplicate:",latest, " Please rescan")
    else:
        entries = new
        if len(entries) == 8 : break

答案 2 :(得分:0)

将条目存储在集合中,检查集合中的元素是否少于8个。如果没有,请打破循环。

entries = set()
counter = 0

while len(entries) < 8:
    counter += 1
    entries.add(input("Enter an item: "))