【发布时间】:2018-12-18 13:45:33
【问题描述】:
我对编码很陌生,我正在做一个任务,我必须在一个巨大的列表中找到所有偶数索引整数的乘积:
number_list = [12, 41, 10, 34, 37, 2, 3, 8, 42, 46, 46, 27, 13, 49, 41, 2, 28, 21, 37, 27, 31, 19, 46, 7, 50, 1, 46, 45, 19, 10, 14, 8, 44, 14, 10, 4, 23, 29, 46, 18, 32, 40, 32, 7, 33, 45, 26, 24, 43, 45]
问题建议使用 range(len(list)),它给了我范围 (1,50),但我不明白这有什么关系。我设法在不使用该方法的情况下得到了答案:
number_list = [12, 41, 10, 34, 37, 2, 3, 8, 42, 46, 46, 27, 13, 49, 41, 2, 28, 21, 37, 27, 31, 19, 46, 7, 50, 1, 46, 45, 19, 10, 14, 8, 44, 14, 10, 4, 23, 29, 46, 18, 32, 40, 32, 7, 33, 45, 26, 24, 43, 45]
result = 1
evenlist = number_list[::2]
for num in evenlist:
result = result * num
range(len(list)) 在这里有什么用处?
【问题讨论】:
-
这是一个不好的建议,不应该使用
range来解决这个问题。 -
result = functools.reduce(operator.mul, number_list[::2]) -
如果有帮助,您也可以跳过范围。
range(start, stop, skip) -
给你这个作业的人应该先学习 Python,然后再假装教它。像你一样使用切片是正确的 Python 方式(使用
reduce(),如 CoryKramer 所示更好)。