将列表中的每个元素乘以2

时间:2014-01-05 02:52:36

标签: python list

问题是写一个名为double_it()的函数应该遍历列表并将原始列表中的每个数字元素乘以2并重新表示整数,表示加倍的元素数。

这就是我所拥有的.....输出只是重复列表2次,但没有乘以值。

def main():
    original_list = [input("Enter a list of numbers: ")]
    double_it(original_list)

def double_it(new_list):
    for index in range(len(new_list)):
        new_list[index] *= 2
        print new_list

main()

2 个答案:

答案 0 :(得分:4)

处理输入时,您的问题看起来像是一个错误。 raw_input函数通常应优先于输入。

我将遵循此Stack Overflow问题: https://stackoverflow.com/questions/4663306/how-can-i-get-a-list-as-input-from-the-user-in-python

至于加倍部分,有几种方法可以做到这一点,可能值得了解,以充分探索python。

迭代

>>> originalList = [1, 2, 3, 4, 5]
>>> newList = []
>>> for item in originalList:
...     newList.append(item*2)
... 
>>> print(newList)
[2, 4, 6, 8, 10]

列表理解

>>> originalList = [1, 2, 3, 4, 5]
>>> newList = [item*2 for item in originalList]
>>> print(newList)
[2, 4, 6, 8, 10]

地图

>>> def double(x): return 2*x
... 
>>> originalList = [1, 2, 3, 4, 5]
>>> newList = list(map(double, originalList))
>>> print(newList)
[2, 4, 6, 8, 10]

围绕这些东西的python文档都非常好,并且是一个很好的学习资源。

答案 1 :(得分:2)

您的double_it()方法正常,只需修改此行

即可
original_list = [input("Enter a list of numbers: ")]

original_list = input("Enter a list of numbers: ")

为什么?因为input()会评估您输入的list列表,因此您可以将其作为列表使用,尝试打印类型< /强>:

a = input("Enter a list of numbers: ")
print type(a)

Enter a list of numbers: [1,2,3]
<type 'list'>