gpt4 book ai didi

python - 如何从列表中的列表中删除包含非数值的单元格

转载 作者:行者123 更新时间:2023-11-28 21:50:19 25 4
gpt4 key购买 nike

我有一个列表,其中包含包含数字和文本的子列表。我想完全删除文本。

所以列表是这样的:

sample_list = [['hello','there'],['1','2.0','3'],['564','text','65.976']]

我一直在尝试的是

list_without_text = [[item for item in sublist] for sublist in sample_list if item.isdigit()==True ]

但是我得到 NameError: name 'item' is not defined.

有什么想法吗?

编辑:列表中的所有项目都是字符串,有些仍然带有数字、字母和/或小数点。

最佳答案

你弄错了,item.isdigit() if 条件应该在子列表推导中。示例 -

list_without_text = [[item for item in sublist  if item.isdigit()==True] for sublist in sample_list]

但这只有在所有元素都是字符串的情况下才有效,并且您想删除不是整数的字符串/ float 。这不包括 2.0 等数字。

为此你可以使用像这样的函数-

def isnum(s):
try:
float(s)
return True
except ValueError:
return False

list_without_text = [[item for item in sublist if isnum(item) ] for sublist in sample_list]

示例/演示 -

>>> l = [["Hello","1"],["2.0","Bye"]]
>>> def isnum(s):
... try:
... float(s)
... return True
... except ValueError:
... return False
...
>>> list_without_text = [[item for item in sublist if isnum(item) ] for sublist in l]
>>> list_without_text
[['1'], ['2.0']]

关于python - 如何从列表中的列表中删除包含非数值的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32049353/

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