列表理解中函数调用的多个 return
Multiple return from function call in list comprehension
我需要解释与此特定案例相关的 Python 的功能:我有一个列表理解,它为 listA
的每个元素调用一个函数。使用此代码:
listA = [1,1,1]
def operation(n):
result = []
*code do something*
result = [a,b,c]
return result
listB = [operation(element) for element in listA]
我获得:
listB = [[a,b,c],[a,b,c],[a,b,c]]
我怎样才能 return 单独的列表的多个元素来实现这个?
listB = [a,b,c,a,b,c,a,b,c]
我试过的是:
ListA = [1,1,1]
def operation(n):
result = []
*code do something*
result = [a,b,c]
for x in result:
return x
输出:[a,a,a]
而不是 [a,b,c,a,b,c,a,b,c]
注意 1:不能使用任何导入
注2:我举了一个简单的案例,我无法将列表转换为平面列表,我需要的是能够从一次调用中return多个值,这可能吗?谢谢
您可以迭代每个返回列表的项目以展平输出:
listB = [item for element in listA for item in operation(element)]
请注意,for
表达式的顺序与编写 'normal' 循环时的顺序相同。
以下应该有效(对于您列表的这个特定结构,不推荐用于其他一些结构):
listB = sum([operation(element) for element in listA], [])
试试这个:
listA = [1, 1, 1]
def operation(n):
result = [i for i in ["a", "b", "c"] * len(listA) for x in i]
return result
listB = operation(listA)
print(listB)
我们在创建嵌套 for 循环时提供了一个展平列表。
您可以将您的函数用作生成器,并通过元素进行二次循环,然后遍历生成器以获取您的列表。
listA = [1,1,1]
def operation(n):
result = []
...
result = ['a','b','c']
############
for i in result:
yield i #change this to yield
############
[j for i in listA for j in operation(i)]
['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
如果您只想实现最终输出,一种方法是使用这样的扩展函数
for i in listA:
listB.extend(operation(listA))
这也会生成相同的结果,但它不是列表理解
我需要解释与此特定案例相关的 Python 的功能:我有一个列表理解,它为 listA
的每个元素调用一个函数。使用此代码:
listA = [1,1,1]
def operation(n):
result = []
*code do something*
result = [a,b,c]
return result
listB = [operation(element) for element in listA]
我获得:
listB = [[a,b,c],[a,b,c],[a,b,c]]
我怎样才能 return 单独的列表的多个元素来实现这个?
listB = [a,b,c,a,b,c,a,b,c]
我试过的是:
ListA = [1,1,1]
def operation(n):
result = []
*code do something*
result = [a,b,c]
for x in result:
return x
输出:[a,a,a]
而不是 [a,b,c,a,b,c,a,b,c]
注意 1:不能使用任何导入
注2:我举了一个简单的案例,我无法将列表转换为平面列表,我需要的是能够从一次调用中return多个值,这可能吗?谢谢
您可以迭代每个返回列表的项目以展平输出:
listB = [item for element in listA for item in operation(element)]
请注意,for
表达式的顺序与编写 'normal' 循环时的顺序相同。
以下应该有效(对于您列表的这个特定结构,不推荐用于其他一些结构):
listB = sum([operation(element) for element in listA], [])
试试这个:
listA = [1, 1, 1]
def operation(n):
result = [i for i in ["a", "b", "c"] * len(listA) for x in i]
return result
listB = operation(listA)
print(listB)
我们在创建嵌套 for 循环时提供了一个展平列表。
您可以将您的函数用作生成器,并通过元素进行二次循环,然后遍历生成器以获取您的列表。
listA = [1,1,1]
def operation(n):
result = []
...
result = ['a','b','c']
############
for i in result:
yield i #change this to yield
############
[j for i in listA for j in operation(i)]
['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
如果您只想实现最终输出,一种方法是使用这样的扩展函数
for i in listA:
listB.extend(operation(listA))
这也会生成相同的结果,但它不是列表理解