所以,我有一个嵌套列表(我们称它为A)。它的长度为2,应将它们视为单独的列表。我想分别遍历这2个,并删除长度不相等的子列表。例如,我希望我的输出与A相同,但要删除[['Table heading']],因为它的长度与其他嵌套列表的长度不同。
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']]]]
答案 0 :(得分:1)
赞
[ 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]
此解决方案在整个列表上循环两次,具体取决于列表大小,这可能是一个限制。
答案 1 :(得分:0)
检查一下。除非元素不再列出,否则它将删除该元素。
def delete_odd(A):
if isinstance(A[0],list)==False:
return
def delete_elem(a,if_not):
print(a,' ',if_not,' ')
i = 0
while i<len(a):
if len(a[i])!=if_not:
del a[i]
else:
i+=1
if len(A)<=2:
pass
else:
n1 = len(A[0])
n2 = len(A[1])
n3 = len(A[2])
if n1==n2:
n = n1
elif n2==n3:
n = n2
delete_elem(A,if_not=n)
i = 0
while i<len(A):
delete_odd(A[i])
i+=1
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']]]]
delete_odd(A)
print(A)
#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']]]]