Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除子列表中位于特定索引的所有元素-python 2_Python_List - Fatal编程技术网

删除子列表中位于特定索引的所有元素-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分配给列表理解