for y in xrange(x)与comprehension

2018-02-25  本文已影响0人  3f31023436c0

# range(start,end,step)函数:(生成可迭代序列,Iterable)

range(20,3**5,10)表示起始为20,终止为3的5次幂,步长为10

1. 对于遍历x,y的循环,经常要用到双重for嵌套。

这时候使用comprehension写法,加入xrange,则更简洁

print [表达式(x,y) for x in xrange(a) for y in xrange(x)]

这里x会遍历a,而y则会遍历x-1,这就是双重for循环的解法。

2. 如果使用小括号()来代替上式中的[],那么就返回一个生成器对象,而不是一个tuple(即,不可修改的列表)。因为tuple使用的很少。而使用for循环构建列表,我们经常遇到列表超级大,还没干别的内存就占用满了的时候。

如果使用小括号括住,内存中只会载入这个列表中的一个元素。

print (表达式(x,y) for x in xrange(a) for y in xrange(x))

此时不会显示list的所有元素,而是只显示一个元素。你要想看所有元素,需要用for循环来一个个看。

3. 如果使用大括号{}来代替上式中的[],则就是构建set或者dict对象,跟大括号的实际意义相符。例如

print { 表达式(x) for x in a}

print { 表达式({x}, {y}) for x,y in enumerate(a)}

此时显示结果为

set([a1,a2,......])

{a1: b1, a2: b2,......}

都有list了,为啥要有set呢?

b=list(set(a))。

利用set里面元素无序而不重复的特性,去除列表a里面的重复元素。

上一篇下一篇

猜你喜欢

热点阅读