list = [('a5', 1), 1, ('a1', 1), 0, 0]
我想将列表中的元素分组为3,如果列表中缺少第二个或第三个元素,则“无”#39;必须附加在相应的位置。
exepected_output = [[('a5', 1), 1,None],[('a1', 1), 0, 0]]
这是否有pythonic方式?对此有所了解,任何建议都会有所帮助。
答案 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)
编辑:正如有人正确评论,不要命名变量列表,你将覆盖内置列表功能。在示例中更改了名称。