我会编写一个小函数来检查列表中是否有字符串,如果是,则字符串应该从列表中删除。
这是我的代码
def str_clearer(L):
for i in L:
if i == str:
L.remove(i)
else:
pass
print(L)
return L
L = [1, 2, 3, "hallo", "4", 3.3]
str_clearer(L)
assert str_clearer(L) == [1, 2, 3, 3.3]
但它与列表没有任何关系 如果我这样做是为了使它创建一个包含所有int或float的新List,那么他什么都不做。
答案 0 :(得分:2)
Python内置函数isinstance()可以在这里使用。
以下方法与您的方法相似。
In[0]: def remove_str(your_list):
new_list = []
for element in your_list:
if not(isinstance(element, str)):
new_list.append(element)
return new_list
In[1]: remove_str([1, 2, 3, "hallo", "4", 3.3])
Out[1]: [1, 2, 3, 3.3]
但这可能会短得多。
In[2]: mylist = [1, 2, 3, "hallo", "4", 3.3]
In[3]: result = [x for x in mylist if not(isinstance(x, str))]
In[4]: print(result)
Out[4]: [1, 2, 3, 3.3]
答案 1 :(得分:1)
可以使用isinstance
完成类型检查。实际上,这可以在列表理解中非常优雅地完成:
result = [x for x in L if not isinstance(x, str)]