美文网首页
for y in xrange(x)与comprehension

for y in xrange(x)与comprehension

作者: 3f31023436c0 | 来源:发表于2018-02-25 00:14 被阅读0次

    # 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里面的重复元素。

    相关文章

      网友评论

          本文标题:for y in xrange(x)与comprehension

          本文链接:https://www.haomeiwen.com/subject/nohhxftx.html