python list concatenation with add function used

问题描述 投票:3回答:3

当我尝试在列表连接情况下使用“+”时,我才意识到一个问题。

例如,我可以这样做:

print([[1] + [5]* n for n in range(1, 4)])
>>> [[1, 5], [1, 5, 5], [1, 5, 5, 5]]

但是,如果我切换添加功能的序列:

print([[5] * n for n in range(1, 4) + [1]])

我不会得到:

>>> [[5, 1], [5, 5, 1], [5, 5, 5, 1]]

相反,我得到了:TypeError: unsupported operand type(s) for +: 'range' and 'list'

反正有没有让它工作?

python concatenation
3个回答
1
投票

您必须将其添加到您正在操作的列表中,而不是您要迭代的范围。另外,如果你要么添加,那么乘法(这里我们做乘法,然后加法),你必须包围第一个语句,因为Python根据operator precedence命令操作:

print([[5] * n + [1] for n in range(1, 4)])

4
投票

你正在做这个操作:

range(1, 4) + [1]

在这种情况下,这并不意味着什么。

您必须在+ [1]之后立即执行[5] * n,如:

print([[5]*n+[1] for n in range(1, 4)])

0
投票

这将成为贡献者已经回答的技巧

[[5] * n + [1] for n in range(1, 4)]

但是在你的解决方案类型范围(1,4)中,如果你想对它进行一些列表操作,就像连接那么你应该这样做:

list(range(1, 4)) + [1]

© www.soinside.com 2019 - 2024. All rights reserved.