无法将输出转换为列表
Unable to convert output to list
如何创建一个接受非负整数和字符串列表的函数,return一个没有字符串的新列表?
例如。 filter_list([1, 2, "a", "b"])
➞[1, 2]
问题:无法将输出转换为列表
def filter_list(a):
mylist=[]
if type(a)==list:
for i in a:
if type(i)==int:
output=print(i)
mylist+=output
return mylist
我做错了什么?
您可以使用仅包含 int
类型的列表元素的列表理解。
def filter_list(lis):
return [i for i in lis if type(i) == int]
print(filter_list([1, 2, "a", "b"]))
代码输出:
[1, 2]
这有帮助吗:
>>> def filter_list(lst):
return [item for item in lst if type(item) is not str]
>>> filter_list([1, 2, 'a', 'b'])
[1, 2]
>>>
使用isinstance
and list comprehension:
def filter_list(lst):
return [i for i in lst if isinstance(i, int)]
使用filter
函数本身:
>>> list(filter(lambda x: isinstance(x, int), [1, 2, "a", "b"]))
[1, 2]
您的代码存在问题,而不是打印并使用 +=
(用于连接两个列表,而不是一个 list
和一个 int
)添加到您的列表,您应该像这样附加元素:
for i in a:
if type(i) == int:
mylist.append(i)
您犯的错误是您将 print()
返回的值分配给 output
(即 None
),然后您添加了 None
类型对象到 list
对象,这是无效操作。您可以通过执行以下操作来修复您的代码:
def filter_list(a):
mylist=[]
if type(a)==list:
for i in a:
if type(i)==int:
print(i)
mylist+=[i]
return mylist
然而,这可以使用列表理解以更漂亮的方式完成!
列表理解是一种使用相对较短的语法创建新列表的方法。
[elem for elem in _list if type(elem) is int]
您可以使用如下过滤方法:
def filter_list(a):
return list(filter(lambda x: type(x) == int, a))
print(filter_list([1, 2, "a", "b"]))
输出:
[1, 2]
您的代码已修复:
def filter_list(a):
mylist=[]
for i in a:
if type(i)==int:
mylist.append(i)
return mylist
def filter_list1(a):
return list(filter(lambda x: type(x) == int, a))
print(filter_list([1, 2, "a", "b"]), filter_list1([1, 2, "a", "b"]))
输出:
[1, 2] [1, 2]
如何创建一个接受非负整数和字符串列表的函数,return一个没有字符串的新列表?
例如。 filter_list([1, 2, "a", "b"])
➞[1, 2]
问题:无法将输出转换为列表
def filter_list(a):
mylist=[]
if type(a)==list:
for i in a:
if type(i)==int:
output=print(i)
mylist+=output
return mylist
我做错了什么?
您可以使用仅包含 int
类型的列表元素的列表理解。
def filter_list(lis):
return [i for i in lis if type(i) == int]
print(filter_list([1, 2, "a", "b"]))
代码输出:
[1, 2]
这有帮助吗:
>>> def filter_list(lst):
return [item for item in lst if type(item) is not str]
>>> filter_list([1, 2, 'a', 'b'])
[1, 2]
>>>
使用isinstance
and list comprehension:
def filter_list(lst):
return [i for i in lst if isinstance(i, int)]
使用filter
函数本身:
>>> list(filter(lambda x: isinstance(x, int), [1, 2, "a", "b"]))
[1, 2]
您的代码存在问题,而不是打印并使用 +=
(用于连接两个列表,而不是一个 list
和一个 int
)添加到您的列表,您应该像这样附加元素:
for i in a:
if type(i) == int:
mylist.append(i)
您犯的错误是您将 print()
返回的值分配给 output
(即 None
),然后您添加了 None
类型对象到 list
对象,这是无效操作。您可以通过执行以下操作来修复您的代码:
def filter_list(a):
mylist=[]
if type(a)==list:
for i in a:
if type(i)==int:
print(i)
mylist+=[i]
return mylist
然而,这可以使用列表理解以更漂亮的方式完成!
列表理解是一种使用相对较短的语法创建新列表的方法。
[elem for elem in _list if type(elem) is int]
您可以使用如下过滤方法:
def filter_list(a):
return list(filter(lambda x: type(x) == int, a))
print(filter_list([1, 2, "a", "b"]))
输出:
[1, 2]
您的代码已修复:
def filter_list(a):
mylist=[]
for i in a:
if type(i)==int:
mylist.append(i)
return mylist
def filter_list1(a):
return list(filter(lambda x: type(x) == int, a))
print(filter_list([1, 2, "a", "b"]), filter_list1([1, 2, "a", "b"]))
输出:
[1, 2] [1, 2]