【问题标题】:How to add numbers in a smaller list into a larger list of python continiously如何将较小列表中的数字连续添加到较大的python列表中
【发布时间】:2017-08-31 17:42:54
【问题描述】:

我正在尝试构建一个多字母密码,但我找不到将较小列表添加到较大列表中的方法,我尝试了列表推导,但仍然无法做到。请帮忙!我希望较小的列表继续将相同的数字添加到较大的列表中

假设我有 2 个这样的列表:

x = [1,2,3]
y = [4,5,6,7,8,9]
z = [i + j for i,j in zip(x,y)]

结果如下

print(z)
[5,7,9]

我怎样才能做到这一点:

[5,7,9,8,10,12]

意味着它不断将相同的数字添加到更长的列表中, 谢谢你的帮助

【问题讨论】:

  • 那是因为zip 函数在最短的迭代器上停止。因为您的第一个列表有 3 个元素,所以它会在 3 次迭代后停止。你可以在这里找到答案 - stackoverflow.com/a/1277311/840582
  • @Vinny 您分享的链接并不能解决这个问题。这个问题想要循环回来并再次使用这些值,该链接显示了如何在较短的列表结束后填充默认值。
  • 你是对的,我的错。我错过了重申价值观的那部分。

标签: python list encryption arraylist list-comprehension


【解决方案1】:

您可以根据需要使用itertools.cycle 循环回x

>>> import itertools
>>> x = [1,2,3]
>>> y = [4,5,6,7,8,9]
>>> z = [i + j for i, j in zip(itertools.cycle(x), y)]
>>> z
[5, 7, 9, 8, 10, 12]

【讨论】:

    【解决方案2】:

    我认为这是最简单的方法: z = [y[i] + x[i % len(x)] for i in range(len(y))]

    【讨论】:

      【解决方案3】:
      x = [1,2,3]
      y = [4,5,6,7,8,9]
      z=[a+b for a,b in zip((x*(int(len(y)/len(x))))[:len(y)],y)]
      

      用 zip 怎么样

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-14
        • 1970-01-01
        • 2021-08-18
        • 2022-11-15
        • 2012-07-12
        • 2021-01-19
        • 1970-01-01
        相关资源
        最近更新 更多