Python 我怎样才能理解列表?
我想在一个循环周期中使用重复的值创建一个列表,如下所示:Python 我怎样才能理解列表?,python,Python,我想在一个循环周期中使用重复的值创建一个列表,如下所示: s=[] for i in range(5): s+=[i,i] [i for i in range(5) for j in range(2)] 但这不起作用 [i, i for i in range(5)] 这里有一种使用zip的方法: [i for p in zip(range(5), range(5)) for i in p] 没有直接的方法可以使用单级列表理解来做与显式循环完全相同的事情。这是因为理解中循环的每次
s=[]
for i in range(5):
s+=[i,i]
[i for i in range(5) for j in range(2)]
但这不起作用
[i, i for i in range(5)]
这里有一种使用
zip
的方法:
[i for p in zip(range(5), range(5)) for i in p]
没有直接的方法可以使用单级列表理解来做与显式循环完全相同的事情。这是因为理解中循环的每次迭代最多只能产生一个值(如果有
if
子句,它可以产生零)
但是,对于这种特定情况,您可以使用除法生成所需的重复值序列,同时在更大的范围内进行迭代:
s = [i//2 for i in range(10)]
我想这就行了。
[i/2代表范围内的i(10)]
列表理解将具有与理解中的迭代器一样多的元素。在这种情况下,迭代器是range(10)
因为,你需要10个元素。您需要在10的范围内进行计算(在本例中为i/2
),以获得所需的元素。您可以尝试以下方法:
s=[[i,i]表示范围(5)内的i]
如果你想把它展平,你可以试试这个嵌套列表
s = [x for y in [[i, i] for i in range(5)] for x in y]
您可以这样做:
s=[]
for i in range(5):
s+=[i,i]
[i for i in range(5) for j in range(2)]
输出为:
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4]
i
循环提供值,j
循环用于重复这些值。你能更好地解释一下,比如你到底想做什么吗?[[i,i]对于范围(5)内的i]
。但是你也可以做list(map(lambda i:[i,i],range(5)))
。但是我不知道怎么做。做什么?寻求调试帮助的问题(“为什么这个代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。这也是一个好办法。但简单比复杂好?为什么它在一次除法运算中产生两个值?它不会同时产生两个值,只有一个。但楼层分割意味着我们连续两次得到相同的值。例如,0//2
和1//2
都是0
。