我不确定为什么我的列表没有删除基于第二个List索引的每个char.以下是代码:
L1 = ['e', 'i', 'l', 'n', 's', 't']
L2 = ['e', 'i', 'l', 'n', 's', 't']
for n_item in range(len(L1)):
if L1[n_item] in L2:
del L2[n_item]
Run Code Online (Sandbox Code Playgroud)
以下是我得到的错误:
Traceback (most recent call last):
File "<pyshell#241>", line 3, in <module>
del L2[n_item]
IndexError: list assignment index out of range
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助 ....
当您删除之前的项目时,列表会变短,因此后面的标记不存在.这是Python中索引迭代的一个症状 - 这是一个糟糕的主意.这不是Python的设计方式,通常会产生难以理解,缓慢,不灵活的代码.
相反,使用列表推导来构造新列表:
[item for item in L1 if item not in L2]
Run Code Online (Sandbox Code Playgroud)
请注意,如果L2很大,则可能需要先将其设置为集合,因为对集合的成员资格测试要快得多.
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |