好吧,我喜欢Python的zip()
函数。一直使用它,它太棒了。时不时地,我想做与zip()
相反的事情,想“我以前知道怎么做”,然后google python解压,然后记住,一个人使用这个神奇的*
解压压缩后的元组列表。如下所示:
x = [1,2,3]
y = [4,5,6]
zipped = zip(x,y)
unzipped_x, unzipped_y = zip(*zipped)
unzipped_x
Out[30]: (1, 2, 3)
unzipped_y
Out[31]: (4, 5, 6)
这到底是怎么回事?那个神奇的星号在做什么?它还可以应用在哪里? Python中还有哪些令人惊叹的、令人惊叹的东西对google来说是如此神秘和困难?
发布于 2010-03-25 04:55:32
Python中的星号记录在Python教程中的Unpacking Argument Lists下。
发布于 2010-03-25 04:54:09
星号执行apply
(正如Lisp和Scheme中所知的那样)。基本上,它接受您的列表,并以该列表的内容作为参数调用函数。
发布于 2010-03-25 05:04:43
它对多个参数也很有用:
def foo(*args):
print args
foo(1, 2, 3) # (1, 2, 3)
# also legal
t = (1, 2, 3)
foo(*t) # (1, 2, 3)
而且,您可以对关键字参数和字典使用双星号:
def foo(**kwargs):
print kwargs
foo(a=1, b=2) # {'a': 1, 'b': 2}
# also legal
d = {"a": 1, "b": 2}
foo(**d) # {'a': 1, 'b': 2}
当然,您也可以将它们组合在一起:
def foo(*args, **kwargs):
print args, kwargs
foo(1, 2, a=3, b=4) # (1, 2) {'a': 3, 'b': 4}
相当整洁和有用的东西。
https://stackoverflow.com/questions/2511300
复制相似问题