删除子列表中位于特定索引的所有元素-python 2
我有一个嵌套列表,我想删除列表中所有子列表的第二个元素 名单如下:删除子列表中位于特定索引的所有元素-python 2,python,list,Python,List,我有一个嵌套列表,我想删除列表中所有子列表的第二个元素 名单如下: A=[[[a, b], [c, d], [g, h]] [[e, f], [g, h], [t, f]]] 我想从中的每个子列表中删除i[1]元素以获得此结果 A=[[[a, b],[g, h]] [[e, f], [t, f]]] 我试过做A.remove(A[i][1]),但结果是“列表索引必须是整数,而不是列表”错误。任何关于如何做的输入都会有帮助。一个简单的for循环可以解决您的问题: A=[[['a',
A=[[[a, b], [c, d], [g, h]]
[[e, f], [g, h], [t, f]]]
我想从中的每个子列表中删除i[1]元素以获得此结果
A=[[[a, b],[g, h]]
[[e, f], [t, f]]]
我试过做A.remove(A[i][1]),但结果是“列表索引必须是整数,而不是列表”错误。任何关于如何做的输入都会有帮助。一个简单的for循环可以解决您的问题:
A=[[['a', 'b'], ['c', 'd'], ['g', 'h']],
[['e', 'f'], ['g', 'h'], ['t', 'f']]]
for l in A:
l.pop(1)
# A == [[['a', 'b'], ['g', 'h']],
# [['e', 'f'], ['t', 'f']]]
简单的for循环可以解决您的问题:
A=[[['a', 'b'], ['c', 'd'], ['g', 'h']],
[['e', 'f'], ['g', 'h'], ['t', 'f']]]
for l in A:
l.pop(1)
# A == [[['a', 'b'], ['g', 'h']],
# [['e', 'f'], ['t', 'f']]]
您可以使用列表理解,这是做这些事情的“pythonic”方式:
A=[[['a', 'b'], ['c', 'd'], ['g', 'h']],
[['e', 'f'], ['g', 'h'], ['t', 'f']]]
[inner.pop(1) for inner in A]
这相当于for循环。Pop在索引处删除一个元素,Python以索引0开始,因此索引1是第二个元素。您可以使用列表理解,这是一种“pythonic”的方法来完成这些操作:
A=[[['a', 'b'], ['c', 'd'], ['g', 'h']],
[['e', 'f'], ['g', 'h'], ['t', 'f']]]
[inner.pop(1) for inner in A]
这相当于for循环。Pop在索引处删除一个元素,Python以索引0开始,因此索引1是第二个元素。我认为,通常情况下,对列表进行变异并不是最好的选择。您会发现大多数Python代码更喜欢返回修改后的列表。例如:
A=[[l[0],*l[2:]表示A中的l]
这里的优点是,您不会冒任何副作用的风险:
A=[
[a'、[b']、[c'、[d']、[g'、[h'],
[e'、[f']、[g'、[h']、[t'、[f'],
]
B=A
A=[[l[0],*l[2:]表示A中的l]
印刷品(B)
仍将输出原始列表:
而如果你变异了A
:
A中l的:
l、 流行音乐(1)
印刷品(B)
这将产生:
[['a'、['b']、['g'、['h']、[[e'、[f']、['t'、[f']]
这并不总是正确的,但除非你有充分的理由,否则不要使用突变。我认为通常情况下,突变列表不是最好的选择。你会发现大多数python代码更喜欢返回一个修改过的列表。例如:
A=[[l[0],*l[2:]表示A中的l]
这里的优点是,您不会冒任何副作用的风险:
A=[
[a'、[b']、[c'、[d']、[g'、[h'],
[e'、[f']、[g'、[h']、[t'、[f'],
]
B=A
A=[[l[0],*l[2:]表示A中的l]
印刷品(B)
仍将输出原始列表:
而如果你变异了A
:
A中l的:
l、 流行音乐(1)
印刷品(B)
这将产生:
[['a'、['b']、['g'、['h']、[[e'、[f']、['t'、[f']]
这并不总是正确的,但除非你有充分的理由,否则不要使用突变。我不相信使用
for loops
进行列表操作。你可以使用map
和lambda
对所有列表项应用转换。要仅保留第一列和第三列,可以执行以下操作:
[*map(lambda x: (x[0], x[2]), A)]
或
它们都产生:
[(['a', 'b'], ['g', 'h']), (['e', 'f'], ['t', 'f'])]
我不相信使用
for loops
进行列表操作。可以使用map
和lambda
对所有列表项应用转换。要仅保留第一列和第三列,可以执行以下操作:
[*map(lambda x: (x[0], x[2]), A)]
或
它们都产生:
[(['a', 'b'], ['g', 'h']), (['e', 'f'], ['t', 'f'])]
这将不起作用,因为
A=[…]
会将A分配给列表理解。这将不起作用,因为A=[…]
会将A分配给列表理解