将元组列表转换为元组列表的列表

1 投票
1 回答
685 浏览
提问于 2025-04-16 03:51

可能重复的问题:
如何在Python中将列表分割成大小相等的块?

我有一个包含多个元组的列表,每个元组里有两个元素(元组的数量可能会变化)。

[(a, b), (c, d)...)]

我想把这个列表转换成一个嵌套列表,每个嵌套列表里包含4个元组。如果原来的元组列表的数量不能被4整除,比如说有13个元组,那么最后的列表里会包含剩下的部分,对于13个元组来说,就是1个元组。

[[(a, b), (c, d), (e, f), (g, h)], [(a, b), (c, d), (e, f), (g, h)]...]

我喜欢Python的一个原因是它有很多方法和结构,可以在不同的数据结构之间转换。我希望能找到一种更“Pythonic”的方法来解决这个问题,而不是我自己想到的办法。

    image_thumb_pairs = [(a, b), (c, d), (e, f), (g, h), (i, j)]
    row = []
    rows = []
    for i, image in enumerate(image_thumb_pairs):
        row.append(image)
        if(i+1) % 4 == 0:
            rows.append(row)
            row = []
    if row:
        rows.append(row) 

1 个回答

2

在编程中,很多时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有时候我们在运行代码时会出现错误,或者代码的表现和我们预期的不一样。这种情况下,查找解决方案就变得非常重要。

在网上,有很多地方可以找到帮助,比如StackOverflow这个网站。这里聚集了很多程序员,他们会分享自己的经验和解决方案。当你遇到问题时,可以在这个平台上搜索相关的内容,看看别人是如何解决类似问题的。

总之,编程的学习过程就是不断尝试和解决问题的过程。遇到困难时,不要气馁,记得去寻找帮助和资源,这样你会逐渐变得更加熟练。

>>> lst = [(1,2), (3,4), (5,6), (7,8), (9,10), (11,12), (13, 14), (15, 16), (17, 18)]
>>> [lst[i:i+4] for i in xrange(0, len(lst), 4)]
[[(1, 2), (3, 4), (5, 6), (7, 8)], [(9, 10), (11, 12), (13, 14), (15, 16)], [(17, 18)]]

撰写回答