我已经看过几个打印字符串多次的例子,但是找不到多次打印出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]
更新:我编辑了代码以反映实际数字,因为我测试了一个代码并发布了另一个代码。对不起。
答案 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)
您可以使用列表推导扩展空列表。将您的两个列表A
和B
压缩在一起,以便并行处理它们。
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)