Python 如何对列表中的元素进行分组?
我有一份清单:Python 如何对列表中的元素进行分组?,python,list,Python,List,我有一份清单: list = ['a', 'b', 'c', 'd', 'e', 'f'] 我如何将此列表转换为: list = ['ab', 'cd', 'ef'] 提前谢谢 你有很多方法,这里有一个: [n for n in map(lambda x: x[0]+x[1], zip(list[::2], list[1::2]))] 我不使用list()强制输出的原因是您正在占用它,这是不推荐的。如果将列表重命名为ls,以下是一个较短的版本: list(map(lambd
list = ['a', 'b', 'c', 'd', 'e', 'f']
我如何将此列表转换为:
list = ['ab', 'cd', 'ef']
提前谢谢 你有很多方法,这里有一个:
[n for n in map(lambda x: x[0]+x[1], zip(list[::2], list[1::2]))]
我不使用list()
强制输出的原因是您正在占用它,这是不推荐的。如果将列表
重命名为ls
,以下是一个较短的版本:
list(map(lambda x: x[0]+x[1], zip(ls[::2], ls[1::2])))
鉴于:
您可以使用:
或:
或者,如果您想要['ab','cd','ef']
您可以执行以下操作:
>>> [a+b for a,b in zip(*[iter(li)]*2)]
['ab', 'cd', 'ef']
或者
对于不同的组长度:
>>> [''.join(l) for l in zip(*[iter(li)]*3)]
['abc', 'def']
(请不要使用list
作为列表的名称。您可以使用相同的名称关闭函数)def对(顺序):
顺序=iter(顺序)
尽管如此:
下一步产量(序列)+下一步产量(序列)
>>>列表(成对(['a','b','c','d']))
['ab','cd']
>>>列表(成对(['a','b','c']))
['ab']
请注意,当总数不为偶数时,它将忽略元素。请提供您自己的代码,并解释在当前实现中给您带来的问题。列表中的元素是否始终为偶数?如何分组:始终生成对?是否始终建立3个组?如果列表的大小不是6个元素怎么办?另请参见感谢您的帮助。我刚试过这个,当我试着打印的时候,我得到了这个:,我怎样才能让它真正打印出来?我已经为你的案例(python3)更新了。通常您可以调用
list()
强制输出,但由于您已经将其用作数据变量,因此我使用了不同的转储方法。我希望这不是分组策略数据库的起点;)所需的输出是['ab',cd','ef']
,而不是['ab','bc','cd','de','ef']
@MoeA您对此有何把握?@Wolf问题中提到了它?如果我不确定列表中有多少元素,我将如何做最后一个?从某种意义上说是自动化的?
>>> [a+b for a,b in zip(li, li[1:])]
['ab', 'bc', 'cd', 'de', 'ef']
>>> [a+b for a,b in zip(*[iter(li)]*2)]
['ab', 'cd', 'ef']
>>> [a+b for a,b in zip(li[::2],li[1::2])]
['ab', 'cd', 'ef']
>>> [''.join(l) for l in zip(*[iter(li)]*3)]
['abc', 'def']