使用Python从数组打印N次

时间:2015-12-18 17:43:09

标签: 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[i] * B[j]

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

3 个答案:

答案 0 :(得分:3)

列表推导的另一种选择

[e for e,c in zip(a,b) for i in range(c)]
[1, 3, 3, 4, 4]

或更多hacky

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

答案 1 :(得分:1)

您可以使用列表推导扩展空列表。将您的两个列表AB压缩在一起,以便并行处理它们。

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

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

答案 2 :(得分:0)

你的代码中有很多额外的东西是你不需要的。

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 https://docs.python.org/2/library/functions.html#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)