佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1121|回复: 3

Programming command for....in....

[复制链接]
发表于 24-11-2012 05:59 PM | 显示全部楼层 |阅读模式
用在PYTHON,看得失英文,看不懂。for... in... 怎么解释? 如下

def total(initial=5, *numbers, **keywords):
count = initial
for number in numbers:
count += number
for key in keywords:
count += keywords[key]
return count
print(total(10, 1, 2, 3, vegetables=50, fruits=100))

答案是166。
那个for。。in。。是什么意思?
+= 和那个一颗星两颗星 又表示什么?

谢谢。 本帖最后由 G_r 于 24-11-2012 06:02 PM 编辑

回复

使用道具 举报


ADVERTISEMENT

发表于 27-11-2012 01:29 PM | 显示全部楼层
for...in 应该是类似foreach的意思。
打个比方,如果numbers是一个array,储存着一组号码,分别为8,7,6,5,9,1,3,5,4
那么for number in numbers就会是一个loop,把numbers里面的号码轮流储存去number这个variable里面。
也就是说,
在第一圈时,number的value会是8
在第二圈时,number的value会是7
在第三圈时,number的value会是6
在第四圈时,number的value会是5
在第五圈时,number的value会是9
。。。
以此类推
回复

使用道具 举报

 楼主| 发表于 28-11-2012 03:05 PM | 显示全部楼层
明白了点,谢谢

再请问, 第六行, count += keywords [key]

这个挂号的key是做什么?
回复

使用道具 举报

发表于 29-11-2012 12:03 PM | 显示全部楼层
When a final formal parameter of the form **name is present, it receives a dictionary (see Mapping Types — dict) containing all keyword arguments except for those corresponding to a formal parameter. This may be combined with a formal parameter of the form *name (described in the next subsection) which receives a tuple containing the positional arguments beyond the formal parameter list. (*name must occur before **name.)


quote from http://docs.python.org/2/tutoria ... l#keyword-arguments

我没学过python,可是根据上面的解释来看,它的概念好象是,如果你放一个*,那么你的parameter将会把一连串普通的arguments当成array。如果你放两个*,那么你的parameter将会把一连串的key-value arguments当成dictionary。所谓的dictionary就是类似2d array,一个是key,另一个是value。只要有key,你就能直到value是什么。但是key一定要是unique的。

也就是说,像是在你给的example当中,def total(initial=5, *numbers, **keywords),第一个parameter是initial,就只是普通的variable,只能储存一个value。所以当你执行total(10, 1, 2, 3, vegetables=50, fruits=100)时,10会被assigned给initial,然后就结束了。

可是第二个parameter有一个*,也就是说它可以接受很多arguments,直到结束。但是它所能接受的argument只能是普通的variable,不能是key-value的variable。所以,1,2,和3都会储存进numbers,成为一个array。vegetables=50之所以不能储存进numbers是因为,他是key-value variable。

第三个parameter有两个**,所以只有key-value的variable会被assigned给keywords。在你的example当中,vegetable是key,50是value; fruits是key,100是value。

所以整个process会是
count = initial                 ---> count = 10
for number in numbers:
count += number           ----> count = count + number where number 是 1, 2, 和 3 在每一个loop时
                                   -----> count = 16
for key in keywords:
count += keywords[key] -----> key是vegetable和fruits,所以keywords[vegetable]会是50,keywords[fruits]会是100
                                   ------> count = 166
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 10-10-2025 12:27 AM , Processed in 0.106274 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表