📅  最后修改于: 2023-12-03 15:04:25.835000             🧑  作者: Mango
在Python中,如果我们有一个包含混合数据类型的元组列表,我们可能需要将其转换为一个包含仅字符串类型的列表。这在处理数据时经常发生。
下面是一些不同的方法,可以将混合类型的元组列表转换为仅包含字符串类型的列表。
我们可以使用列表推导式来创建一个新的字符串列表。我们可以迭代混合元组列表,并对每个元组的元素进行检查。如果元素是字符串,则我们将其添加到新列表中。如果元素不是字符串,则我们将其转换为字符串并添加到新列表中。
mixed_list = [('apple', 'banana'), ('orange', 10), ('grape', True)]
string_list = [str(i) for j in mixed_list for i in j if type(i) == str]
print(string_list)
# Output: ['apple', 'banana', 'orange', 'grape']
我们可以使用map函数来创建一个新的字符串列表。我们可以使用lambda函数来检查每个元素是否为字符串。如果元素是字符串,则我们将其返回。如果不是字符串,则返回None。最后,我们可以使用filter函数来从列表中删除None值。
mixed_list = [('apple', 'banana'), ('orange', 10), ('grape', True)]
string_list = list(filter(None, map(lambda x: None if type(x) != str else x, [i for j in mixed_list for i in j])))
print(string_list)
# Output: ['apple', 'banana', 'orange', 'grape']
我们可以使用reduce函数来创建一个新的字符串列表。我们可以使用lambda函数来迭代混合元组列表,并将所有字符串类型的元素添加到一个新列表中。
from functools import reduce
mixed_list = [('apple', 'banana'), ('orange', 10), ('grape', True)]
string_list = reduce(lambda x, y: x + [str(y)] if type(y) == str else x, [i for j in mixed_list for i in j], [])
print(string_list)
# Output: ['apple', 'banana', 'orange', 'grape']
以上是三种可以将混合类型的元组列表转换为仅包含字符串类型的列表的方法。您可以根据自己的需要选择适合您的方法。