[英]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.