Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何对列表中的元素进行分组?_Python_List - Fatal编程技术网

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']