a = ['', '', 1, 2]
b = [3, '', '', '']
c = ['', 4, '', '']
z = a + b + c
z = [n for n in z if n is not '']
-2
假设每个索引有 exactly one 非 '' 元素,您可以发出以下命令:
>>> list1 = ['','',1,2]
>>> list2 = [3,'','','']
>>> list3 = ['',4,'','']
>>>
>>> lists = [list1, list2, list3]
>>> [next(x for x in col if x != '') for col in zip(*lists)]
[3, 4, 1, 2]
如果假设不成立,则需要澄清问题 .
zip(*iterables)是转置迭代集合的常用习惯用法 . next(x for x in col if x != '') 从每个"column"获取第一个非 '' 元素 .
0
你可以通过列表理解合并它们,然后过滤出 '' ;
list1 = ['','',1,2]
list2 = [3,'','','']
list3 = ['',4,'','']
merged_list = [ item for item in (list1+list2+list3) if item != '']
print(merged_list)
# Will give you
# [1, 2, 3, 4]
或者正如您所提到的,您想将 list2 和 list3 合并到 list1 ;
list1 = ['','',1,2]
list2 = [3,'','','']
list3 = ['',4,'','']
# Add list2 and list3 to list1
list1.extend(list2)
list1.extend(list3)
# Filter out the '' from list1
list1 = [ item for item in (list1) if item != '' ]
# Print out results
print(list1)
0
您可以使用 zip 执行此操作:
List1 = ['','',1,2]
List2 = [3,'','','']
List3 = ['',4,'','']
Merged_list = [elem for item in list(zip(List1,List2,List3)) for elem in item if not elem=='']
print(Merged_list)
结果:
[3, 4, 1, 2]
0
temp_list = list1 + list2 + list3
merged_list = []
for i in xrange(temp_list):
if temp_list[i] == “ “:
merged_list.append(temp_list[i])
0
list1 = ['','',1,2]
list2 = [3,'','','']
list3 = ['',4,'','']
merged_list = [element for l in list(zip(list1 ,list2,list3)) for element in l if element ]
0
第一个数组元素的优先级:
from itertools import chain, zip_longest
list(x[0] or '' if x[0] != '' else next(chain((x for x in x[1:] if x != ''), ('',))) for x in zip_longest(a, b, c))
7 回答
您可以使用求和操作合并列表(“”,例如:[1,2] [3,4] => [1,2,3,4]),您可以使用过滤器删除空值或无值 . 在你的问题中,它看起来你保证在多个列表中在同一个索引中没有值 . 所以你可以合并它们然后过滤它们,它会得到结果但是 .
假设每个索引有 exactly one 非
''
元素,您可以发出以下命令:如果假设不成立,则需要澄清问题 .
zip(*iterables)是转置迭代集合的常用习惯用法 .
next
(x for x in col if x != '')
从每个"column"获取第一个非''
元素 .你可以通过列表理解合并它们,然后过滤出
''
;或者正如您所提到的,您想将
list2
和list3
合并到list1
;您可以使用
zip
执行此操作:结果:
第一个数组元素的优先级: