Python小白问题一个,求大家的帮助。

wangcai 发布于 2014年03月10日 | 更新于 2014年03月15日
无人欣赏。

List = ['aa', 'bb', 'cc', 'dd']

Result = [w.capitalize() for w in random.sample(List, 2)]

这几句的作用就是在List中随机挑选两个元素,并将首字母大写,然后赋值给Result。 我怎么也理解不了他的执行顺序啊,如果让我写我只会想到:

Result = random.sample(List, 2)

for i in range(0,len(Result)): Result[i]=Result[i].capitalize()

Coders能告诉我应该怎么理解之前的那两句codes吗?

共11条回复
dawncold 回复于 2014年03月10日

python写多了应该就习惯这种思维方式了,Result是个list,list中的元素是哪些呢?是一些capitalize后的w组成,那么w来自哪里呢?来自random.sample出的这个list。之所以不写成你那种样式,可能就是传说中的Pythonista,你写多了自然就会那么写了。

tinyfool 回复于 2014年03月10日

1楼说得对,也就是个熟能生巧的问题,不要死扣,写着写着你就熟悉了,也明白了,也习惯了

wangcai 回复于 2014年03月11日

1楼 @dawncold

2楼 @tinyfool

哦哦谢谢大家啦!!!

minddriven 回复于 2014年03月11日

那个写法叫做 List Comprehension ,是基于现有的 List 来创建一个新的 List。其实很多语言都支持。

>>> l = [1, 2, 3]

>>> [ i + 1 for i in l ]

[2, 3, 4]

xiaomayi0323 回复于 2014年03月12日

4楼 @minddriven 翻译书中一般称之为列表推导

stonedreamlh 回复于 2014年03月12日

这是Python3推荐的列表写法

cnsoft 回复于 2014年03月13日

不这么写的人飘过... 是不是伪Pythoner 呢。。

minddriven 回复于 2014年03月13日

7楼 @cnsoft

这东西就像是说话或者写作。

如果是喜欢的,是有心人,会不知不觉积累一些有趣的短语跟说法。运用的时候,会不知不觉。

有的人为了炫耀自己懂得很多短语,为美词佳句而美词佳句,就成了炫技了,整个看起来就很怪。

另,打开 pep8 检查,其实更好。

wangcai 回复于 2014年03月13日

4楼 @minddriven 噢,原来是这样!非常专业啊,万分感谢!看了你的帖子才知道有 List Comprehension和 pep8 这个东西,学习了,谢谢!!

moulton 回复于 2014年03月14日

喜欢有条理 那就按你的写了

sheldonchen 回复于 2014年03月15日

列表推导。一开始都不习惯。

看书上说这样写比平时我们习惯的写法效率高,一想到这点,我就很有动力去学习这么写了。

本帖有11个回复,因为您没有注册或者登录本站,所以,只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。

登录 或者 注册
[顶 楼]
|
|
[底 楼]
|
|
[首 页]