在列表中创建副本
在列表中创建副本
我有
list = [a, b, c, d]
和
numbers = [2, 4, 3, 1]
我想获得以下类型的列表:
new_list = [a, a, b, b, b, b, c, c, c, d]
这是我目前所拥有的:
new_list=[] for i in numbers: for x in list: for i in range(1,i+1): new_list.append(x)
admin 更改状态以发布 2023年5月21日
嵌套列表推导式可以工作:
L = ['a','b','c','d'] numbers = [2, 4, 3, 1] >>> [x for x, number in zip(L, numbers) for _ in range(number)] ['a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'd']
“子循环” for _ in range(number)
重复值number
次。
这里L
可以持有任何对象,不仅仅是字符串。
例子:
L = [[1, 2, 3],'b','c', 'd'] numbers = [2, 4, 3, 1] [x for x, number in zip(L, numbers) for _ in range(number)] [[1, 2, 3], [1, 2, 3], 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'd']
但是这样会使子列表扁平化:
[x for i, j in zip(L, numbers) for x in i*j] [1, 2, 3, 1, 2, 3, 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'd']
不是完全期望的结果。