【问题标题】:Can i add values from a list to another list within a loop?我可以将列表中的值添加到循环中的另一个列表吗?
【发布时间】:2019-03-28 18:02:34
【问题描述】:

我正在尝试将列表中的值添加到不同列表中的其他值。因此,如果我在一个列表中有 40 个,在另一个列表中有 8 个,我希望能够在索引方面做到 40-8。棘手的部分是我试图循环执行,每次都有不同的值。

listOfDigits = [40, 50, 60, 70, 80, 90, 100, 110, 120]
listOfValues = [8, 5, 7, 1, 4, 9]

我希望能够从 40 中取出 8,然后将 5 添加到 50,然后从 60 中添加 7....直到在循环中添加 9 到 80...。一旦我超过“值列表”中的最后一个值,我希望它重新开始,从 100 中取出 8,然后将 5 添加到 110 ......等等并重复这些值。

希望这是有道理的。我不确定如何解决这个问题。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 我试图使用 for 循环,通过索引添加每个值。所以 listOfValues[0] - listOfDigits[0] 然后我会将这些新值添加到列表中,棘手的部分是循环,因为我不确定如何实现它,因为它必须重新开始。

标签: python list encryption indexing


【解决方案1】:

这是结合zip()cycle()enumerate() 的绝佳机会。

cycle() 将确保您的“重新开始”要求。
zip() 允许您同时迭代两个列表。
enumerate() 用于决定添加或减去值。

from itertools import cycle

digits = listOfDigits
values = cycle(listOfValues)

for i, (digit, value) in enumerate(zip(digits, values)):
    if i % 2 == 0:
        print(digit - value)
    else:
        print(digit + value)

【讨论】:

  • 太棒了,我昨天正在调查枚举。更深入地了解我在做什么,我不仅要加减,我还必须乘以数组中的第三个数字(在本例中为 7),然后像其他数字一样从数字中取出新值其中。有没有像上面的代码一样更简单的方法来执行此操作,因为您使用循环和枚举显示的方式正是我正在寻找的。​​span>
  • @DannyTaylor 这可能很容易做到,只需检查i % 3 而不是2
猜你喜欢
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
相关资源
最近更新 更多