首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么x,y= zip(*zip(a,b))在Python中工作?

为什么x,y= zip(*zip(a,b))在Python中工作?
EN

Stack Overflow用户
提问于 2010-03-25 04:51:31
回答 6查看 37.1K关注 0票数 81

好吧,我喜欢Python的zip()函数。一直使用它,它太棒了。时不时地,我想做与zip()相反的事情,想“我以前知道怎么做”,然后google python解压,然后记住,一个人使用这个神奇的*解压压缩后的元组列表。如下所示:

代码语言:javascript
复制
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来说是如此神秘和困难?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-03-25 04:55:32

Python中的星号记录在Python教程中的Unpacking Argument Lists下。

票数 43
EN

Stack Overflow用户

发布于 2010-03-25 04:54:09

星号执行apply (正如Lisp和Scheme中所知的那样)。基本上,它接受您的列表,并以该列表的内容作为参数调用函数。

票数 18
EN

Stack Overflow用户

发布于 2010-03-25 05:04:43

它对多个参数也很有用:

代码语言:javascript
复制
def foo(*args):
  print args

foo(1, 2, 3) # (1, 2, 3)

# also legal
t = (1, 2, 3)
foo(*t) # (1, 2, 3)

而且,您可以对关键字参数和字典使用双星号:

代码语言:javascript
复制
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}

当然,您也可以将它们组合在一起:

代码语言:javascript
复制
def foo(*args, **kwargs):
   print args, kwargs

foo(1, 2, a=3, b=4) # (1, 2) {'a': 3, 'b': 4}

相当整洁和有用的东西。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2511300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档