如何更改列表列表中的元素
How can I change an element in a list of lists
我有以下结构:
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')]
如何在给定条件的情况下替换元素而不遍历所有元素?有没有单一的说法?
没有迭代就无法做到这一点,因为元组是不可变的。但是,您可以使用列表理解在一行中创建一个新的元组列表,如下
final_structure = [ tuple([ j if isinstance(j, str) else "MissingValue" for j in l ]) for l in list_of_tuples ]
在您的特定情况下,您可以使用内部函数 isinstance()
.
将所有不是字符串(np.nan
)的内容替换为 "MissingValue"
这是一种方法。
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')]
我有以下结构:
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')]
如何在给定条件的情况下替换元素而不遍历所有元素?有没有单一的说法?
没有迭代就无法做到这一点,因为元组是不可变的。但是,您可以使用列表理解在一行中创建一个新的元组列表,如下
final_structure = [ tuple([ j if isinstance(j, str) else "MissingValue" for j in l ]) for l in list_of_tuples ]
在您的特定情况下,您可以使用内部函数 isinstance()
.
np.nan
)的内容替换为 "MissingValue"
这是一种方法。
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')]