Bob*_*uba -2 python list python-3.x
我有一个元素列表,如:
x = ['A, B', '2', '3', 'Jan, Feb']
# ^ ^
# comma separated single string
Run Code Online (Sandbox Code Playgroud)
我想将此列表转换为列表列表,其中每个元素的所有组合都以逗号分隔,以便它看起来像:
[['A', '2', '3', 'Jan'], ['A', '2', '3', 'Feb']
['B', '2', '3', 'Jan'], ['B', '2', '3', 'Feb']]
Run Code Online (Sandbox Code Playgroud)
使用Python的内置函数/库实现这一目标的优雅方法是什么?
您可以先根据逗号分割列表元素,,然后使用itertools.product以获得所需的列表:
from itertools import product
x = ['A, B', '2', '3', 'Jan, Feb']
new_list = list(product(*[i.split(', ') for i in x]))
Run Code Online (Sandbox Code Playgroud)
其中的内容new_list将是:
[('A', '2', '3', 'Jan'),
('A', '2', '3', 'Feb'),
('B', '2', '3', 'Jan'),
('B', '2', '3', 'Feb')]
Run Code Online (Sandbox Code Playgroud)
根据Dan D的评论,下面是timeitPython 2中间列表V/s中间生成器比较的比较.中间列表表达式略快一些:
mquadri$ python -m timeit "from itertools import product; list(product(*(i.split(', ') for i in ['A, B', '2', '3', 'Jan, Feb'])))"
100000 loops, best of 3: 4.83 usec per loop
mquadri$ python -m timeit "from itertools import product; list(product(*[i.split(', ') for i in ['A, B', '2', '3', 'Jan, Feb']]))"
100000 loops, best of 3: 3.78 usec per loop
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |