python - 如何添加到 python 中的奇数索引值?

标签 python for-loop indexing

我必须处理列表以将金额添加到每个奇数位置。例如,如果我以

开始
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/

相关文章:

Java匹配两个字符串之间的每两个序列字符

MySQL并不总是使用索引

python - 删除 Numpy 中重新排列的数组

python - 其中 pyinstaller 路径必须是

r - 在 r 中循环一个 rep() 函数

javascript - JS : How to make a for loop out of this?

database - 如何在H2数据库中创建b-tree索引?

mysql - 演示索引 SQL 表的性能优势

python - pygame:检测操纵杆断开连接,并等待它重新连接

python - 无法从另一个类python访问变量