如何更改列表列表中的元素

时间:2018-07-17 17:28:37

标签: python list numpy tuples structure

我具有以下结构:

list_of_tuples = [['portugal', np.nan, 'japan'], [np.nan, 'germany', 'canada'], ['UK', 'US', np.nan]] 

我想更改 MissingValue 的numpy nan值,然后返回到元组列表:

final_structure = [('portugal', 'MissingValue', 'japan'), ('MissingValue', 'germany', 'canada'), ('UK', 'US', 'MissingValue')] 

如何在不迭代所有元素的情况下替换给定条件的元素?有没有一个陈述?

2 个答案:

答案 0 :(得分:2)

没有迭代就无法做到,因为元组是不可变的。但是,您可以使用列表推导在一行内创建新的元组列表,紧跟在

之后
final_structure = [ tuple([ j if isinstance(j, str) else "MissingValue" for j in l ]) for l in list_of_tuples ]

在特定情况下,您可以使用内在函数np.nan"MissingValue"替换不是字符串(isinstance())的所有内容。

答案 1 :(得分:1)

这是一种方法。

import numpy as np

list_of_tuples = [['portugal', np.nan, 'japan'], [np.nan, 'germany', 'canada'], ['UK', 'US', np.nan]]
list_of_tuples = map(lambda x: tuple(["MissingValue" if i is np.nan else i for i in x]), list_of_tuples)
print(list_of_tuples)

输出:

[('portugal', 'MissingValue', 'japan'), ('MissingValue', 'germany', 'canada'), ('UK', 'US', 'MissingValue')]