将函数返回的变量(多个变量)附加到不同列表的python方法是什么?
假设我们有一个像这样的函数:
def func():
return np.random.randint(0, 10), np.random.randint(10, 20)
最简单的非pythonic方法是:
l1 = []
l2 = []
for i in range(x):
# do something
# do something else
a, b = func()
l1.append(a)
l2.append(b)
或使用numpy:
lst = []
for i in range(x):
# do something
# do something else
lst.append(func())
l1, l2 = np.array(lst).T
或使用here提供的解决方案提取项目。
答案 0 :(得分:1)
根据情况,这可能会更清洁:
def func(l1, l2):
l1.append(np.random.randint(0, 10)); l2.append(np.random.randint(10, 20))
return l1,l2
答案 1 :(得分:1)
一种方法可能是创建一个master-list
然后转置:
def func():
return np.random.randint(0, 10), np.random.randint(10, 20)
masterLst = []
for i in range(5):
masterLst.append(func())
l1,l2 = zip(*masterLst)
print(list(l1))
print(list(l2))
输出:
[6, 5, 8, 6, 2]
[19, 11, 19, 10, 17]
编辑:
来自@hpaulj,是当前方法的一种变体:
def func():
return np.random.randint(0, 10), np.random.randint(10, 20)
l1,l2 = list(zip(*[func() for _ in range(4)]))
print(list(l1))
print(list(l2))