使用Python从数组中打印N次数字

使用Python从数组中打印N次数字,python,arrays,printing,int,Python,Arrays,Printing,Int,我见过多次打印字符串的示例,但找不到多次打印int的解决方案 我有两个数组 我想打印1,1次3,2次和4,2次。 我知道我不能像打印n次字符串那样使用*运算符 我怎样才能到达 [1,3,3,4,4] 我写的代码如下: A = [1, 3, 4] B = [1, 2, 2] i = 0 j = 0 for i in range(0, len(A), 1): for j in range(0, len(B), 1): if i==j: print A

我见过多次打印字符串的示例,但找不到多次打印int的解决方案

我有两个数组

我想打印1,1次3,2次和4,2次。 我知道我不能像打印n次字符串那样使用*运算符

我怎样才能到达

[1,3,3,4,4]
我写的代码如下:

A = [1, 3, 4]
B = [1, 2, 2]
i = 0
j = 0
for i in range(0, len(A), 1):
    for j in range(0, len(B), 1):
        if i==j:
            print A[i] * B[j]

更新:我编辑代码以反映实际数字,因为我测试了一个代码并发布了另一个代码。很抱歉。

您的代码中有很多不需要的额外内容

A=[1,3,4]
B=[1,2,2]
"""first loop over the elements you want to print in A"""
for i in range(len(A)):
    """ A[i] j times """
    for j in range(B[i]):
        print A[i]
我建议阅读python中range函数的工作原理

此外,如果要将这些值添加到数组中,则必须首先定义该数组,然后将它们添加到该数组中,而不是打印它们

A=[1,3,4]
B=[1,2,2]
result=[]
"""first loop over the elements you want to print in A"""
for i in range(len(A)):
    """ append A[i] to result j times """
    for j in range(B[i]):
        result.append(A[i])

print str(result)

您的代码中有很多不需要的额外内容

A=[1,3,4]
B=[1,2,2]
"""first loop over the elements you want to print in A"""
for i in range(len(A)):
    """ A[i] j times """
    for j in range(B[i]):
        print A[i]
我建议阅读python中range函数的工作原理

此外,如果要将这些值添加到数组中,则必须首先定义该数组,然后将它们添加到该数组中,而不是打印它们

A=[1,3,4]
B=[1,2,2]
result=[]
"""first loop over the elements you want to print in A"""
for i in range(len(A)):
    """ append A[i] to result j times """
    for j in range(B[i]):
        result.append(A[i])

print str(result)

您可以使用列表理解扩展空列表。将你的两个列表A和B压缩在一起,以并行处理它们

result = []
_ = [result.extend([a] * b) for a, b in zip(A, B)]

>>> result
[1, 3, 3, 4, 4]
编辑

列表理解应该只用于创建列表,而不是它的副作用。最好在上面的示例中使用循环

result = []
for a, b in zip(A, B):
    result.extend([a] * b)

您可以使用列表理解扩展空列表。将你的两个列表A和B压缩在一起,以并行处理它们

result = []
_ = [result.extend([a] * b) for a, b in zip(A, B)]

>>> result
[1, 3, 3, 4, 4]
编辑

列表理解应该只用于创建列表,而不是它的副作用。最好在上面的示例中使用循环

result = []
for a, b in zip(A, B):
    result.extend([a] * b)

另一种选择是列表理解

[e for e,c in zip(a,b) for i in range(c)]
[1, 3, 3, 4, 4]
或者,更黑一些

sum([[e]*c for e,c in zip(a,b)],[])
[1, 3, 3, 4, 4]

另一种选择是列表理解

[e for e,c in zip(a,b) for i in range(c)]
[1, 3, 3, 4, 4]
或者,更黑一些

sum([[e]*c for e,c in zip(a,b)],[])
[1, 3, 3, 4, 4]

这不是您实际运行的代码;如果是的话,你会得到的。我们需要看到您实际运行的代码,而不是以不同方式同样错误的代码。您是希望打印一个重复的数字列表,还是希望以每个数字的频率创建一个列表?你能编辑问题以显示所需的输出吗?user2357112你是对的,我已经测试了一段代码并发布了另一段代码。很抱歉,这不是您实际运行的代码;如果是的话,你会得到的。我们需要看到您实际运行的代码,而不是以不同方式同样错误的代码。您是希望打印一个重复的数字列表,还是希望以每个数字的频率创建一个列表?你能编辑问题以显示所需的输出吗?user2357112你是对的,我已经测试了一段代码并发布了另一段代码。对不起,我明白了,谢谢!这是我想要的,但我想打印A[I]最终得到1,3,3,4,4,所以我把它编辑成:对于范围中的j[I]:打印A[I]我明白了,谢谢!这是我想要的,但我想打印A[I]最终得到1,3,3,4,4,所以我把它编辑成:对于范围内的j[I]:打印A[I]我喜欢你的第一个解决方案。我喜欢你的第一个解决方案。