在Python中,是否可以通过以下方式进行多项任务(或者更确切地说,是否有简写):
SET autocommit=0;
答案 0 :(得分:2)
是否要为从随机函数的两个不同调用分配不同的返回值,或者将单个值分配给由单个函数调用生成的两个变量。
对于前者,使用元组解包
t = (2,5)
a,b = t #valid!
def random_int():
return random.randint(1, 100)
#valid: unpack a 2-tuple to a 2-tuple of variables
a, b = random_int(), random_int()
#invalid: tries to unpack an int as a 2-tuple
a, b = random_int()
#valid: you can also use comprehensions
a, b = (random_int() for i in range(2))
对于第二个,您可以链分配以将相同的值分配给多个变量。
#valid, "normal" way
a = random_int()
b = a
#the same, shorthand
b = a = random_int()
答案 1 :(得分:0)
字典是一种很好的方法,否则你可以在python中使用集合中的namedtuples,试试这样的东西,你会在单个变量中收到多个调用结果说一个
num = namedtuple("num", "b c d")
a = num(random_int(),random_int(),random_int())
print a.b,a.c,a.d
进口:
from collections import namedtuple
答案 2 :(得分:0)
您可以返回任何对象,包括可能在分配时被打包的列表和元组:
import random
def random_ints():
return random.randint(1, 100), random.randint(1, 100)
a, b = random_ints()
print(b, a)
实际上这个a, b
也是元组的快捷方式,当你做多个赋值时,左边的逗号分隔变量列表也是元组,可以写成:
(a,b)=范围(2)
答案 3 :(得分:0)
我个人最喜欢的是将您的功能转换为生成器(前提是它适合您的程序)。
示例:强>
>>> import random
>>>
>>> def rnd_numbers(how_many=1): # assuming how_many is positive
... for _ in range(how_many): # use xrange() in Python2.x
... yield random.randint(1, 100)
...
>>> x, y, z = rnd_numbers(3)
>>> x
98
>>> y
69
>>> z
16
>>> a,b = rnd_numbers(2)
>>> a
52
>>> b
33
答案 4 :(得分:-1)
在我的测试中,如果你的回报中的项目与变量一样多,那么它就可以了。
[undefined, undefined, undefined]