赞
[ 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]
此解决方案在整个列表上循环两次,具体取决于列表大小,这可能是一个限制。
,
检查一下。除非元素不再列出,否则它将删除该元素。
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'],['4']]]]
delete_odd(A)
print(A)
#output
[[[['1'],[[['A'],['4']]]]
本文链接:https://www.f2er.com/3155689.html