gpt4 book ai didi

python - 从列表列表中删除特定类的所有元素

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:56 24 4
gpt4 key购买 nike

我正在熟悉 Python,目前正在研究“列表”的基本操作。

所以这是我的问题。

我有一个列表列表,其中除了两个整数之外主要包含“字符串”类元素:假设我只想删除整数类元素,这样我就剩下一个仅包含字符串元素的未更改的列表列表:

即我的原始列表如下:

    listoflists=[['Juice', 'Pizza', 'Potatoes', 'Bananas', 5, 10],
['eggs', 'ham', 'chicken', 'Pineapple'],
'Onions']

我希望它变成以下内容:

listoflist=[['Juice', 'Pizza', 'Potatoes', 'Bananas'],
['eggs', 'ham', 'chicken', 'Pineapple'],
'Onions']

到目前为止,我已经找到了如何使用以下方法从单数列表中删除整数类元素:

 no_integer_list = [x for x in listA if not isinstance(x, int)]

但我正在努力思考如何将其应用于列表列表。

我正在考虑制作一个 for 循环来读取多列表中的每个列表并将上面的代码应用于每个列表,但我不确定如何执行此操作。

如能提供任何帮助,我们将不胜感激。非常感谢。

最佳答案

假设您只有一层子列表(并且您的最后一个元素是列表而不是字符串),您可以像这样使用嵌套列表理解

filtered = [[x for x in sublist if not isinstance(x, int)] for sublist in listoflists]

输出:

[['Juice', 'Pizza', 'Potatoes', 'Bananas'], ['eggs', 'ham', 'chicken', 'Pineapple'], ['Onions']]

如果你的最后一个元素有意是一个字符串(或者可能是一个 int),我会舍弃那些乱七八糟的代码,只写一个像这样的简单函数

def filter_list(listoflists):
newlist = []
for element in listoflists:
if isinstance(element, list):
newlist.append([x for x in element if not isinstance(x, int)])
elif isinstance(element, int):
continue
else:
newlist.append(element)
return newlist

请注意,这旨在简单地删除所有 int 类型 - 其他类型将保留。如果你只想保留字符串并丢弃所有其他类型,你可以使用停止使用否定并有

def filter_list(listoflists):
newlist = []
for element in listoflists:
if isinstance(element, list):
newlist.append([x for x in element if isinstance(x, str)])
elif isinstance(element, str):
newlist.append(element)
return newlist

关于python - 从列表列表中删除特定类的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36792915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com