python - 将列表中的每三个项目组合在一起 - Python

标签 python list

<分区>

我有一个由重复模式组成的列表,即

list=['a','1','first','b','2','second','c','3','third','4','d','fourth']`

我不确定这个列表会有多长,它可能会很长,但我想创建重复模式的列表,即连同填充的名称

list_1=['a','1','first']
list_2=['b','2','second']
list_3=['c','3','third']
..... etc

什么是最好的、基本的代码(不需要导入模块)我可以用来实现这个?

最佳答案

您可以使用 zip() 获取 block :

>>> lst = ['a','1','first','b','2','second','c','3','third','4','d','fourth']
>>> list(zip(*[iter(lst)]*3))
[('a', '1', 'first'), ('b', '2', 'second'), ('c', '3', 'third'), ('4', 'd', 'fourth')]

使用 zip() 避免创建中间列表,如果您有长列表,这可能很重要。

zip(*[iter(lst)]*3) 可以重写:

i = iter(lst)   # Create iterable from list
zip(i, i, i)    # zip the iterable 3 times, giving chunks of the original list in 3

但是前者虽然有点神秘,但更笼统。

如果您需要此列表的名称,那么我建议您使用字典:

>>> d = {'list_{}'.format(i): e for i, e in enumerate(zip(*[iter(lst)]*3), 1)}
>>> d
{'list_1': ('a', '1', 'first'),
 'list_2': ('b', '2', 'second'),
 'list_3': ('c', '3', 'third'),
 'list_4': ('4', 'd', 'fourth')}
>>> d['list_2']
('b', '2', 'second')

关于python - 将列表中的每三个项目组合在一起 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44104729/

相关文章:

python - 如何下载目录中的产品?

python - _sql_constraints 和 _constraints 在 OpenERP/Odoo 上的区别?

python - Django QuerySet .count() 为 0 并且 .exists() 为 false,即使 QuerySet 中有一个对象(Django Rest Framework)

twitter-bootstrap - 列表组的 Bootstrap 水平堆叠

xml - 以 xml 格式导出 Sharepoint 列表的最简单方法是什么?

Python:如何使这段代码运行得更快

python - Plotly - 在 plotly 上绘制 k-means 集群是行不通的

java - 按 DESC 计数并列出列表排序计数中的出现次数

java - java中如何将类类型对象转换为 double 类型

list - 方案相当于元组拆包是什么?