我想了解python中列表理解的概念 给定代码 输出
我知道理解可以分为以下几点:我想了解python中列表理解的概念 给定代码 输出,python,list-comprehension,Python,List Comprehension,我知道理解可以分为以下几点: for a in range(3): for b in range(a): print(a,b) 有人能解释一下上面提供的输出是如何产生的……列表理解没有翻译成: for a in range(3): for b in range(a): print(a,b) 而是: x = [] for a in range(3): for b in range(a): x.append((a, b))
for a in range(3):
for b in range(a):
print(a,b)
有人能解释一下上面提供的输出是如何产生的……列表理解没有翻译成:
for a in range(3):
for b in range(a):
print(a,b)
而是:
x = []
for a in range(3):
for b in range(a):
x.append((a, b))
列表理解的作用是:
ret = []
for a in range(3):
for b in range(a):
ret.append((a,b))
print(ret) # [(1, 0), (2, 0), (2, 1)]
它返回您正在获取的列表…您正在并行运行的
范围(3)
和范围(a)
实际情况是a
被设置为0
,1
,最后是2
然后,为范围(a)
中的每个元素定义b
现在生成数据:
a = 0
range(0) # nothing
a = 1
range(1) # (0, )
(1, 0) # first pair of (a, b) for a = 1
a = 2
range(2) # (0, 1)
(2, 0) # first pair of (a, b) for a = 2
(2, 1) # second pair of (a, b) for a = 2
# end
考虑到上述情况,结果是
[(1,0),(2,0),(2,1)]
我想你要找的是:
a=0
因此内部循环跳过,因为range(0)
返回一个空列表a=1
因此,当范围(1)与[0]
相等时,只对0执行内部循环,因此第一对是(1,0)
a=2
内部循环运行b=0
和b=1
,因此另外两对(2,0)
和(2,1)
ret = []
for a in range(3):
for b in range(a):
ret.append((a,b))
print(ret) # [(1, 0), (2, 0), (2, 1)]
a = 0
range(0) # nothing
a = 1
range(1) # (0, )
(1, 0) # first pair of (a, b) for a = 1
a = 2
range(2) # (0, 1)
(2, 0) # first pair of (a, b) for a = 2
(2, 1) # second pair of (a, b) for a = 2
# end