gpt4 book ai didi

python - 根据条件从嵌套列表中删除某些子列表

转载 作者:行者123 更新时间:2023-12-01 06:58:07 28 4
gpt4 key购买 nike

所以,我有一个嵌套列表(我们称之为 A)。它的长度为 2,并且它们应该被视为单独的列表。我想分别迭代这两个,并删除长度不相等的子列表。例如,我希望我的输出与 A 相同,但删除了 [['Table header']],因为它与其他嵌套列表的长度不同。

A=[[[['1'], ['2'], ['3'], ['4']],
[['x'],['y'],['z'],['w']],
[['a'],['b'],['c'],['d']],
[['11'], ['22'], ['33'], ['44']]],
[[['Table heading']],
[['A'], ['B'], ['C'], ['D']],
[['X'], ['Y'], ['Z'], ['W']],
[['1'], ['2'], ['3'], ['4']]]]

output=[[[['1'], ['2'], ['3'], ['4']],
[['x'],['y'],['z'],['w']],
[['a'],['b'],['c'],['d']],
[['11'], ['22'], ['33'], ['44']]],
[[['A'], ['B'], ['C'], ['D']],
[['X'], ['Y'], ['Z'], ['W']],
[['1'], ['2'], ['3'], ['4']]]]

最佳答案

像这样

[ y for x in A for y in x if len(y) == 4]

或者采用可读格式。

out = []
for inner in A:
for inner_inner in inner:
if len(inner_inner) == 4:
out.append(inner_inner)

如果你不知道内部列表的大小,但你知道只有一个列表大小不匹配,你可以这样做。

out = []
for inner in A:
for inner_inner in inner:
inner_size = len(inner_inner)
try:
if inner_size == previous_size:
out.append(inner_inner)
except NameError:
previous_size = inner_size
out.append(inner_inner)

这个有一个默认值,如果要删除第一个inner_inner元素,则将删除整个列表元素而不是第一个元素。

或者像这样

from collections import Counter

size = Counter([ len(y) for x in A for y in x ]).most_common(1)[0][0]
[ y for x in A for y in x if len(y) == size]

此解决方案在整个列表上循环两次,具体取决于列表大小,这可能是一个限制。

关于python - 根据条件从嵌套列表中删除某些子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58721272/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com