让我们一步一个脚印吧。
首先,我们知道我们需要从中读取两个的用户列表中的数字。为了简单起见,让我们假设用户可以输入一个或多个空间分辨率值来填充数字列表。例如。
1 2 3 4 5
现在,我们已经定义了我们的输入将如何进入,我们可以正确地解析它。为此,我们将首先使用.split()
将输入拆分为一个字符串列表,然后使用列表理解将每个字符串转换为实际数字。但由于我们将不得不使用这个逻辑两次,让我们将其封装在一个名为get_numbers()
功能:
def get_numbers():
numbers = input("Enter some numbers: ").split()
return [int(n) for n in numbers]
现在我们可以用我们的新功能来收集用户数的两个列表。我将其命名为第一个列表list1
和第二list2
:
list1 = get_numbers()
list2 = get_numbers()
现在,我们已经解决了让用户输入进入名单的问题,我们可以将注意力转移到了问题的第二部分:
返回单个列表,其是每个列表中的两个参数的逐元素乘法。如果列表长度不同,它应该返回一个列表,其长度与两者中较短的一样长。
让我们开始通过只是履行第一要求,那么我们将在后面处理第二个。
我们知道,我们需要从两个列表中成对获取每个元素的第n个元素,将它们一起多个并将结果放在一个新的列表中。为了完成成对遍历列表的任务,我们可以使用zip()
。同样,我们将使用列表理解,而不是为循环常规:
[A * B为A,B拉链(列表1,列表2)]
现在,让我们也包裹在connivence功能,并称之为zip_and_multiply()
:
def zip_and_multiply(list1, list2):
return [a*b for a, b in zip(list1, list2)]
然而,没有意识到这一点,我们也履行了我们的第二个要求(“如果列表的长度不同,它应该返回一个列表,是只要短这两个。“)。
你会发现,如果zip()
有两个不同长度的列表,它会在两个列表中最短的一个结束时停止拉伸,因此它完全满足了第二个要求。
所有剩下要做的就是打印list1
和list2
(变量)使用的zip_and_multiply()
结果:
print zip_and_multiply(list1, list2)
在整体编写所有上面的代码(!唷),我们的最终方案后将(注意,这是一个不同的顺序如何出现上面的代码):但是
def get_numbers():
numbers = input("Enter some numbers: ").split()
return [int(n) for n in numbers]
def zip_and_multiply(list1, list2):
return [a*b for a, b in zip(list1, list2)]
list1 = get_numbers()
list2 = get_numbers()
print zip_and_multiply(list1, list2)
应该注意,上面的代码缺少它们通常在说很多代码段的程序,如正确的错误哈ndling。
对不起,我错误地输入了代码 - 我现在编辑了它! – Jane
如果您有任何建议,我会很感激!这是几个小时,我仍然不知道:( – Jane
你可以提供你的输入原因你使用raw_input需要一个字符串。这将是有益的 –