【问题标题】:Replace values of a list of lists with values of another different list in Python [duplicate]用Python中另一个不同列表的值替换列表列表的值[重复]
【发布时间】:2018-08-31 22:01:54
【问题描述】:

我想知道是否可以用 Python 中另一个列表的值替换列表列表的值:

我们说

W = [[0,0],[0,0,0],[0,0,0,0,0]]

V = [1,2,3,4,5,6,7,8,9,10]

我想知道是否可以将 W 的值替换为 V 的值,如下所示:

W = [[1,2],[3,4,5],[6,7,8,9,10]]

非常感谢!

【问题讨论】:

  • w = [[0, 0], [0, 0, 0], [0, 0, 0, 0, 0]] v = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] z = 0 for i in w: x = 0 while x

标签: python list


【解决方案1】:

你可以使用iter:

W = [[0,0],[0,0,0],[0,0,0,0,0]]
V = [1,2,3,4,5,6,7,8,9,10]
v = iter(V)
new_w = [[next(v) for _ in i] for i in W]

输出:

[[1, 2], [3, 4, 5], [6, 7, 8, 9, 10]]

【讨论】:

  • 虽然这很有意义并且是最简洁的解决方案,但创建一个零数组只是为了在后续操作中将其丢弃似乎是一种浪费。
  • @coldspeed 除非 OP 真的希望改变 W 的位置,否则后者似乎纯粹用于构建最终输出。
【解决方案2】:

V 转换为迭代器,使用itertools.islice 切片并分配回W

from itertools import islice
it = iter(V)
for i in W:
    i[:] = islice(it, len(i))

print (W)
[[1, 2], [3, 4, 5], [6, 7, 8, 9, 10]]

我喜欢这个,因为它会更新 W 而不创建新列表。

【讨论】:

    猜你喜欢
    • 2017-06-21
    • 1970-01-01
    • 2021-06-16
    • 2020-03-20
    • 2021-05-13
    • 1970-01-01
    • 2019-04-10
    • 2018-07-15
    • 1970-01-01
    相关资源
    最近更新 更多