Python 在动态列表上循环,它';s指数将发生变化

Python 在动态列表上循环,它';s指数将发生变化,python,Python,所以我有一个循环的问题。 如果我有两张单子 list1=[1,2,3] 列表2=[4,5,6] 我将循环遍历它们,删除元素并将其附加到另一个列表中 所以我的名单是 list1=[1,2,3,4,5] 列表2=[6] 或者列表可以是字符串 现在,当我是这样的时候: 范围内i的(len(列表2)) 我知道我的程序将弹出索引器错误:列表索引超出范围 是否有任何方法可以有效地循环,而不必同时退出这两个列表(如同时检查这两个列表) 不使用任何库,如itertools等 示例代码: 范围内i的(len

所以我有一个循环的问题。 如果我有两张单子

list1=[1,2,3]
列表2=[4,5,6]
我将循环遍历它们,删除元素并将其附加到另一个列表中 所以我的名单是

list1=[1,2,3,4,5]
列表2=[6]
或者列表可以是字符串

现在,当我是这样的时候:

范围内i的
(len(列表2))
我知道我的程序将弹出
索引器错误:列表索引超出范围
是否有任何方法可以有效地循环,而不必同时退出这两个列表(如同时检查这两个列表) 不使用任何库,如itertools等

示例代码:

范围内i的
(len(列表1)):
如果(列表1[i]>列表2[i]):
list1.append(list2[i])
del list2[i]
其他:
list2.append(list1[i])
del list1[i]
尝试用于可变项列表(如
列表

仅将[:]用于不可变的列表(如
int

编辑

list1=['p','p2','p3']
列表2=['p4',p5',p6']
对于列表2中的项目[:]:
如果项目!='p6':
列表1.追加(项目)
list2=list2[1:]
顺便说一句,如果您只想连接这两个列表,只需运行
list1.extend(list2)

编辑2 代码中的内容不是您所问的问题。只需添加一些if语句:

list1=[1,2,3]
列表2=[4,5,6]
对于范围内的i(len(列表1)):
如果len(列表1)>i和len(列表2)>i:
如果列表1[i]>列表2[i]:
list1.append(list2[i])
del list2[i]
其他:
list2.append(list1[i])
del list1[i]
其他:
#打印(“超出范围。跳过”)#或引发异常或中断
持续
# [2]
# [4, 5, 6, 1, 3]
试试这个:

for element in list2:
    list1.append(element)
    list2.remove(element)

这实际上取决于您如何实现这一点,例如:

list1=['p','p2','p3']
列表2=['p4',p5',p6']
list2=list2[::-1]
对于范围内的(len(列表2)):
list1.append(list2[-1])
列表2.pop()
清单2
[]
清单1
['p','p2','p3','p4','p5','p6']

不会产生错误。

具体的用例是什么?你能再解释一下吗?为什么列表中只保留p6?为什么不保留p5或p4?使用浅拷贝进行迭代
list2[:]
list2.copy()
这一点尚不清楚,可以共享更多的代码吗?@BoseongChoi,这是静态的。@Juhil Somaiya如果我有一个程序,可以将元素赋给另一个列表,就是这样,并且保留了未使用的元素Yet,你能提供一个例子吗?完美的例子,我已经将问题的代码修改得更清楚了。你能检查一下吗?@YousefGH你的代码的用途是什么?我不明白…如果它是列表1的元素到列表2呢?如果有案例呢?就像我在这个问题上提供的一样。列表2取自列表1,您添加的示例代码总是输入循环的
else
部分,即将
list1
的元素添加到
list2
。我不确定您是否理解删除和添加元素的逻辑。