在python中分组列表元素

时间:2016-09-23 16:25:49

标签: python python-2.7

list = [('a5', 1), 1, ('a1', 1), 0, 0]

我想将列表中的元素分组为3,如果列表中缺少第二个或第三个元素,则“无”#39;必须附加在相应的位置。

exepected_output = [[('a5', 1), 1,None],[('a1', 1), 0, 0]]

这是否有pythonic方式?对此有所了解,任何建议都会有所帮助。

2 个答案:

答案 0 :(得分:2)

这是与其他答案略有不同的方法,对每个元素的类型进行比较,然后将原始列表分成几个块。

li = [('a5', 1), 1, ('a1', 1), 0, 0]

for i in range(0, len(li), 3):
    if type(li[i]) is not tuple:
        li.insert(i, None)
    if type(li[i+1]) is not int:
        li.insert(i+1, None)
    if type(li[i+2]) is not int:
        li.insert(i+2, None)

print [li[i:i + 3] for i in range(0, len(li), 3)]

答案 1 :(得分:1)

据我所知,获得所需结果的唯一方法是遍历列表并检测何时遇到元组。

应该起作用的例子:

temp = None
result = []
for item in this_list:
    if type(item) == tuple:
        if temp is not None:
            while len(temp) < 3:
                temp.append(None)
            result.append(temp)
        temp = []
    temp.append(item)

编辑:正如有人正确评论,不要命名变量列表,你将覆盖内置列表功能。在示例中更改了名称。