用值替换列表中的空元素

时间:2021-06-16 20:14:35

标签: python python-3.x list

我在下面的代码片段中有一个问题:

我有一个列表,其中一些是空的。首先,我想用一个值替换空值,然后将其展平。

这是代码片段:

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]  

但是我无法得到结果。请帮忙

3 个答案:

答案 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)