所以,如果你想通过与列表长度相关的东西来调整起点,只需使用列表的长度来计算增量,例如:
for x in range(len(testList)):
print(x - len(testList) // 2, end=", ")
您必须针对边缘情况进行整理,例如如果列表有偶数个元素该怎么办,但这仍然是相同的概念,使用长度来计算如何更改每个元素。
您还应该意识到,您会得到一个带有该代码的结束分隔符,并且末尾没有换行符。请参阅下面的解决方法。
这只是作为如何调整起点的示例。
当然,你总是可以选择更 Pythonic 的:
>>> print(", ".join([str(n - len(testList) // 2) for n in range(len(testList))]))
-4, -3, -2, -1, 0, 1, 2, 3, 4
不过,如果您是开始使用 Python,那可能不是一个好主意 :-)
随着你变得更高级,了解这些事情很高兴,但这并不一定有助于学习语言。下面的解释真的是为新的 Python 开发者准备的,如果你已经了解列表推导,请随意忽略。
它还有一个优点是不把分隔符放在最后一项之后,工作原理如下:
-
for 循环为您提供0..n-1 的项目序列,其中n 是列表长度。
-
n-len(x)//2 会调整这些值,为您提供一个(大致)以零为中心的范围。
-
str() 将这些转换为字符串。
- 周围的
[] 字符将整个序列变成一个列表。
-
join 将这些列表项连接在一起,", " 作为分隔符。
如果您希望它以偶数或奇数列表长度恰好围绕零居中(正如您在评论中提到的那样),正确的说法是:
print(", ".join([str(n + 0.5 - len(testList) / 2) for n in range(len(testList))]))
您可以通过以下成绩单确认:
>>> for i in range(10):
... testList = [0] * i
... print(i, ":", ", ".join([str(n + 0.5 - len(testList) / 2) for n in range(len(testList))]))
...
0 :
1 : 0.0
2 : -0.5, 0.5
3 : -1.0, 0.0, 1.0
4 : -1.5, -0.5, 0.5, 1.5
5 : -2.0, -1.0, 0.0, 1.0, 2.0
6 : -2.5, -1.5, -0.5, 0.5, 1.5, 2.5
7 : -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0
8 : -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5
9 : -4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0