繁体   English   中英

此嵌套循环的Python列表理解是什么?

[英]What is Python List Comprehension of this Nested Loop?

我有这样的情况:

#!/usr/bin/python2.7
y = [[0 for i in xrange(size_of_array)] for j in xrange(size_of_array)]

offset_flag = 0

for i in xrange(size_of_array):
    for j in xrange(size_of_array):
        y[i][j] = starting_no + j + offset_flag
    offset_flag += j + 1

我想要嵌套的for循环的列表理解,但它也应该处理如下情况:

offset_flag += j + 1

如何实现这种列表理解?

您的整个代码可以替换为:

# Changing variables for cleaner expression:
#    size_of_array -> s_a
#    starting_no -> start

y = [[start + j + (i*s_a) for j in xrange(s_a)] for i in xrange(s_a)]

只需使用乘法来计算偏移量即可:

y = [[starting_no + j + (i * size_of_array) for j in xrange(size_of_array)]
     for i in xrange(size_of_array)]

使用较短的变量名可以更简洁地编写:

start, size = starting_no, size_of_array
y = [[start + j + (i * size) for j in xrange(size)] for i in xrange(size)]

您的offset值不过是i * size_of_array 外循环的每次迭代都添加j + 1 ,但是j 总是要设置为size_of_array - 1 j替换为size_of_array - 1 ,您将获得offset += size_of_array 第一次迭代是0 ,然后是1 * size_of_array ,一直到i变量,一直到(size_of_array - 1) * size_of_array

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM