我必须处理列表以将金额添加到每个奇数位置。例如,如果我以
开始def main():
L = [1,3,5,7,9,11]
并且必须在每个奇数位置上加5,输出应该是
L = [1,8,5,12,9,16]
我不知道从哪里开始,我应该使用索引和 for 循环,但我尝试的一切都不起作用。这是我目前所拥有的
def main():
L = [3,12,9,5,7,6,8]
i=0
while i < len(L):
if i%2 == 1:
print L[i]
i = i+5
elif i%2 == 0:
print L
最佳答案
您可以拼接您的列表。拼接是对来自另一个源列表的原始列表的索引进行分配。这个“其他源列表”可以来自从另一个切片形成的简单列表理解。
>>> L = [1,3,5,7,9,11]
>>> L[1::2] = [x+5 for x in L[1::2]]
>>> L
[1, 8, 5, 12, 9, 16]
切片语法解释
切片是指您获取一个有限序列,并使用 1-2 个冒号字符对其进行索引,目的是选择一个子序列。具有 1 个冒号字符的切片具有以下格式:
[start:stop]
带有 2 个冒号字符的切片具有以下格式:
[start:stop:step]
参数可以省略,然后它们将被设置为默认值。如果省略 start,则默认为序列的第一个索引,或 0,因为 Python 序列是从 0 开始索引的。如果省略 stop,则默认为序列的最后一个有效索引 + 1,或者等效于序列的长度。如果省略步骤,则默认为 1。
所以当你像 seq[1::2]
那样做切片时,你的意思是,获取 seq
的元素,索引从索引 1 开始inclusive(由您指定),停止在索引 len(seq)
exclusive(默认值),每次步进 2(由您指定)。
列表理解解释
列表理解可以被认为是一种简洁的 Pythonic 方式,用于对可迭代对象上任意数量的潜在嵌套迭代进行映射和过滤操作。如果这些对您来说都没有意义,请不要担心!您可以稍后学习所有 map 和过滤内容。现在,只需将列表理解 [x+5 for x in L[1::2]]
视为:
newlist = []
for x in L[1::2]:
newlist.append(x+5)
然后 newlist
将被设置为列表理解的值。
关于python - 如何添加到 python 中的奇数索引值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30018033/