我有两个清单:
nums = [2, 3, 5]
mylist = ["aaa", "bbb", "ccc"]
Run Code Online (Sandbox Code Playgroud)
我想要实现的是重复每个元素的mylist次数与nums. 预期输出为:
["aaa", "aaa", "bbb", "bbb", "bbb", "ccc", "ccc", "ccc", "ccc", "ccc"]
Run Code Online (Sandbox Code Playgroud)
想到了几种解决方案。
最简单的方法是对collections.Counter使用elements()方法:
>>> from collections import Counter
>>> nums = [2, 3, 5]
>>> mylist = ["aaa", "bbb", "ccc"]
>>> list(Counter(dict(zip(mylist, nums))).elements())
['aaa', 'aaa', 'bbb', 'bbb', 'bbb', 'ccc', 'ccc', 'ccc', 'ccc', 'ccc']
Run Code Online (Sandbox Code Playgroud)
或者你可以直接使用itertools 模块:
>>> from itertools import chain, repeat
>>> list(chain.from_iterable(map(repeat, mylist, nums)))
['aaa', 'aaa', 'bbb', 'bbb', 'bbb', 'ccc', 'ccc', 'ccc', 'ccc', 'ccc']
Run Code Online (Sandbox Code Playgroud)
要在没有库的情况下做到这一点,嵌套列表理解就足够了:
>>> [elem for n, elem in zip(nums, mylist) for i in range(n)]
['aaa', 'aaa', 'bbb', 'bbb', 'bbb', 'ccc', 'ccc', 'ccc', 'ccc', 'ccc']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |