使用列表乘以一个值?

时间:2015-05-08 16:13:43

标签: python list

n1 = 20*values[0]
n2 = 100*values[1]
print(n1,"\n",n2)

我基本上得到了一个清单,上面有一些值,只有我有

目前,如果我的第一个值为3,第二个值为7,则3个将显示20次,7个将显示100次, 但是我希望它能成倍增加。

有没有办法在不导入任何内容的情况下执行此操作?

- 再次编辑 - 我应该早点说这么多,但我没有意识到输入的值会改变任何东西,或者影响到这一点 我有的代码顶部:

for num in numbers:
values.append(num)

值为空列表,“数字”为输入

4 个答案:

答案 0 :(得分:1)

我认为这就是你想要的

>>> values = [3,7]
>>> n1 = 20 * [values[0]]
>>> n2 = 5 * [values[1]]
>>> print n1
[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
>>> print n2
[7, 7, 7, 7, 7]

答案 1 :(得分:1)

number * list_value = product

In [1752]: values = [3, 7]

In [1753]: 20 * values[0]
Out[1753]: 60

答案 2 :(得分:0)

当你乘以int时,数学函数就会接管。但是,为了重复,只需转换为str然后乘以:

n1 = 20*str(values[0])
n2 = 100*str(values[1])
print(n1,"\n",n2)

答案 3 :(得分:0)

如果您有一个值列表和另一个数字列表,则将相应的值乘以:

values = [12, 14]
multiples = [20, 100]

然后,你可以得到你想要的东西:

result = [value * multiple for value, multiple in zip(values, multiples)]

请参阅ziplist comprehensions

另一方面,如果您希望values中的元素重复multiples中的元素,则可以执行以下操作:

def repeat(values, repeats):
    for value, rep in zip(values, repeats):
        for _ in range(rep):
            yield value

现在,您可以使用repeat()作为生成器来执行您想要的操作:

>>> list(repeat([3, 7], [5, 10])
[3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7]