社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何根据python中的数字列表生成数量?

ScarletCoder16 • 4 年前 • 1073 次点击  

如何根据list1创建以下数字的列表?

list1=[2,1,3]

列表1=[2,1,3]

[1, 1, 2, 3, 3, 3] 
 (2)  (1)   (3) #<-- Ignore this part, I just put it to give you more detail of my question

上面,我想打印 (2) 以及 (3)因为列表1=[ , ,

在python3里有什么有效的方法可以做到吗? (-抱歉,我是新来的堆栈溢出,请原谅我没有有效的提问)

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53242
 
1073 次点击  
文章 [ 8 ]  |  最新文章 4 年前
user10987432
Reply   •   1 楼
user10987432    4 年前
lengths = [2, 1, 3]

result = sum([[number] * length for number, length in enumerate(lengths, start=1)], [])
print(result)

输出:

[1, 1, 2, 3, 3, 3]
Laurent LAPORTE
Reply   •   2 楼
Laurent LAPORTE    4 年前

print("1" * 5)
# 11111

values = "132"
list1 = [2, 1, 3]
result = []
for value, count in zip(values, list1):
    result.extend(value*count)
print(result)
# -> ['1', '1', '3', '2', '2', '2']

您还可以使用 int

values = [[1], [2], [3]]
list1 = [2, 1, 3]
result = []
for value, count in zip(values, list1):
    result.extend(value*count)
print(result)
# -> [1, 1, 2, 3, 3, 3]
kaya3
Reply   •   3 楼
kaya3    4 年前

itertools ,这是我的解决方案。

>>> a = [2, 1, 3]
>>> from itertools import chain, repeat
>>> list(chain.from_iterable(repeat(i, v) for i, v in enumerate(a, 1)))
[1, 1, 2, 3, 3, 3]
Andrej Kesely
Reply   •   4 楼
Andrej Kesely    4 年前

l = [2, 1, 3]

print([j for i, v in enumerate(l, 1) for j in [i] * v])

印刷品:

[1, 1, 2, 3, 3, 3]

答案基于@kaya3评论-更有效!(谢谢!):

print( [i for i, v in enumerate(l, 1) for _ in range(v)] )
N Chauhan
Reply   •   5 楼
N Chauhan    4 年前

n = [2, 1, 3]
result = []
for i, x in enumerate(n, start=1):
    result.extend([i] * x)

或者,作为一行:

result = [y for x in [[i] * j for i, j in enumerate(n, start=1)] for y in x]
Mark Meyer
Reply   •   6 楼
Mark Meyer    4 年前

我认为这是一个生成器,可以根据需要生成扁平化的值。类似于:

list1=[2,1,3]

def expandIndices(l):
    for i, n in enumerate(l,1):
        yield from [i] * n

list(expandIndices(list1))
# [1, 1, 2, 3, 3, 3]
Alec Alameddine
Reply   •   7 楼
Alec Alameddine    4 年前

enumerate() :

n = [2, 1, 3]
result = []
for i, j in enumerate(n, start=1):
    result.extend([i] * j)
Sheri
Reply   •   8 楼
Sheri    4 年前

有一种方法:

list1=[2,1,3]
list2 = []
for j, num in enumerate(list1, 1):
    for _ in range(num):
        list2.append(j)

print(list2)

输出:

[1, 1, 2, 3, 3, 3]