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

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')]