【发布时间】:2021-10-25 07:05:30
【问题描述】:
a = [["A","B"],["C","D"],["D","E"]]
for i in range(len(a)):
if i == 0:
a[i] = []
print(a) # [[], ['C', 'D'], ['D', 'E']]
我在上面使用过从列表中删除内部列表,但它会打印 [] 。我想删除列表本身。
期望的输出:- [['C', 'D'], ['D', 'E']]
我在下面尝试的另一种方法适用于 i=0、i=1 甚至 i=2 但是当我的条件都是真的(一种情况)时,
a = [["A","B"],["C","D"],["D","E"]]
for i in range(len(a)):
if True:
a.pop(i)
print(a) # IndexError: pop index out of range
我知道使用 pop 会移动索引并导致错误超出范围。需要解决方案来解决这个问题。
【问题讨论】:
-
关于'使用 pop 正在移动索引并导致错误超出范围':您可以通过反向迭代来避免该问题:
for i in reversed(range(len(a))): -
我有条件并且必须验证检查,如果满足则只删除特定列表。我使用循环遍历所有内部列表,然后根据条件验证以删除该特定列表,或者如果满足所有条件,则删除所有列表。
-
你应该把范围写成
range(len(a)-1)