我在下面的代码片段中有一个问题:
我有一个列表,其中一些是空的。首先,我想用一个值替换空值,然后将其展平。
这是代码片段:
a = [['3'] , ['4'], [], ['6']] #I want to get ['3', '4', 0 , 6]
flat = ['0' if i == '[]' else i for element in a for i in element]
但是我无法得到结果。请帮忙
答案 0 :(得分:3)
您可以使用 next 和默认值
flat = [next(x, "0") for x in a]
或者只是空列表是假的这一事实
flat = [x[0] if x else "0" for x in a]
答案 1 :(得分:0)
试试下面的代码,
代码 1 -
a = [['3'] , ['4'], [], ['6']] #I want to get ['3', '4', 0 , 6]
updated = [val[0] if val else '0' for val in a]
print(updated)
Code2(为了便于理解)-
a = [['3'] , ['4'], [], ['6']] #I want to get ['3', '4', 0 , 6]
for i in range(len(a)):
if a[i] == []:
a[i] = '0'
else:
a[i] = a[i][0]
print(a)
以上代码都满足您的要求。
答案 2 :(得分:0)
这是将其展平为一维数组的另一种方法,但它不会将空数组替换为 0。
from itertools import chain
a = [
['3'],
['4'],
[],
['6']
]
flatten_list = list(chain.from_iterable(a))
print(flatten_list)