【问题标题】:List reset in a "for" loop [duplicate]在“for”循环中重置列表[重复]
【发布时间】:2016-05-08 03:09:05
【问题描述】:

伙计们,我正在尝试执行此程序,我必须获取一个列表并将所有非唯一元素分开并将其放入列表中,而无需更改其顺序。 例如
[1,2,3,1,3]=[1,3,1,3]
[5,5,5,5]=[5,5,5,5]
[1,2,3,4,5]=[]

为此,我在 python 中编写了程序并放置了一些标志来帮助我知道我在哪里做错了。所以在程序中我尝试重置 list3 值(在循环中删除它的一个元素之后退出它)但它不会让我这样做。所以任何帮助将不胜感激。非常感谢你们。

list1=[1,2,3,1,3]
list2=[]
d=0
m=0
l=len(list1)
print(l)
for x in range(0,l):
    print('for loop')
    list3=list1  # I used this to reset the list3 to list1 and use it in the loop but it wouldn't reset
    print('this is the reset of list 3',list3)
    m=list1[x]
    print(m,x)
    print(list3[x])
    del (list3[x])

    while True:
        print('while loop',list3[d])

        if m==list3[d]:
            print('its here')
            list2.append(m)
            print('this is list2: ',list2)
        d+=1

        if d==lenght(list3)-1:
            print('its here22222')
            break
print(list2)

# my results were

5
for loop
this is the reset of list 3 [1, 2, 3, 1, 3]
1 0
1
while loop 2
while loop 3
while loop 1
its here
this is list2:  [1]
its here22222
for loop
this is the reset of list 3 [2, 3, 1, 3]
3 1
IndexError: list index out of range

【问题讨论】:

标签: python list for-loop reset


【解决方案1】:

这是你想要的吗?

#list1=[5,5,5,5,5]
list1=[1,2,3,1,3]
#list1=[1,2,3,4,5]
list2=[]

for num in list1:
    if list1.count(num) > 1:
        list2.append(num)

print(list2)

【讨论】:

  • 它确实有效。我知道计数功能。我也用过。但我只是不明白为什么第 9 行中的 list3 没有将 list3 重置为 list1。非常感谢@dovo36。 :)
  • 哦,好的。就像paisonco上面所说的那样。 list3=list1 使 list3 指向与 list1 相同的内存。因此,它们是同一事物的 2 个不同标签。如果你想复制list1,覆盖list3,然后阅读他给你的那个链接,它显示了可以完成的不同方法。
  • 非常感谢@davo36。这真的帮助了我
猜你喜欢
  • 2021-12-22
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多