Python从另一个列表创建特定列表

Python从另一个列表创建特定列表,python,list,for-loop,reverse,enumerate,Python,List,For Loop,Reverse,Enumerate,在学习python时,我遇到了以下问题。我已经有一些整数列表(例如initial\u list)。然后,我尝试使用以下数字模式创建列表(例如,result): result[len(result) - 1] = 1 result[i] = result[i + 1] * initial_list[i] 例如: initial_list = [2, 2, 2, 2, 3, 2, 2] result = [192, 96, 48, 24, 12, 4, 2, 1] 以下是我的第一个实现: imp

在学习python时,我遇到了以下问题。我已经有一些整数列表(例如
initial\u list
)。然后,我尝试使用以下数字模式创建列表(例如,
result
):

result[len(result) - 1] = 1
result[i] = result[i + 1] * initial_list[i]
例如:

initial_list = [2, 2, 2, 2, 3, 2, 2]
result = [192, 96, 48, 24, 12, 4, 2, 1]
以下是我的第一个实现:

import numpy as np
initial_list = [2, 2, 2, 2, 3, 2, 2]
result = [1]
for number in reversed(initial_list):
    result.append(result[-1] * number)
result = np.array(result[::-1])
import numpy as np
initial_list = [2, 2, 2, 2, 3, 2, 2]
result = np.ones(len(initial_list) + 1)
for i, number in enumerate(reversed(initial_list)):
    result[len(result) - i - 2] = result[len(result) - i - 1] * number
这是我的第二个实现:

import numpy as np
initial_list = [2, 2, 2, 2, 3, 2, 2]
result = [1]
for number in reversed(initial_list):
    result.append(result[-1] * number)
result = np.array(result[::-1])
import numpy as np
initial_list = [2, 2, 2, 2, 3, 2, 2]
result = np.ones(len(initial_list) + 1)
for i, number in enumerate(reversed(initial_list)):
    result[len(result) - i - 2] = result[len(result) - i - 1] * number
我想第二个更好,因为它不包含append方法和初始化具体大小的列表。另外,
result=np.one(len(初始列表)+1)
与不正确的浮点数字组成。我想知道这个算法是否有一个更简单的实现版本

在该算法之后,我将创建
OrderedDict

from collections import OrderedDict
ordered_dict = OrderedDict(zip(other_list, result))
也许我可以在为
O(1)
创建
OrderedDict
的过程中反转
result
列表,像
reversed
一样“动态”用于循环,这样我就可以简化上面的算法。

如果是一个选项,您可以使用:

您可以使用和

你为什么不能这么做

result = [0] * len(initial_list)
result[-1] = 1
for i in xrange(len(result) - 2, -1, -1):
  result[i] = result[i + 1] * initial_list[i]

该算法应该做什么?@padraiccnningham它应该根据上面提到的模式从初始列表创建列表:
result[len(result)-1]=1,result[i]=result[i+1]*initial_list[i]
我认为理解列表是个好主意,但我很难理解你的算法。例如,
result[len(result)-1]=1
只有在
result
中包含一些数据时才有意义。
result
一开始是什么样子的?@Quill也许我误解了?我读了“我想知道这个算法是否有一个更简单的实现版本。”这一部分,特别是我认为这会更有意义,因为这似乎是一个代码优化的问题。在中,似乎是说“最佳实践和设计模式使用”的主题是“从项目中获得特定工作代码的反馈”。很明显,你比我更清楚什么是离题,但我不明白你为什么这么认为。看来你是对的,谢谢你阅读关于主题的部分和帮助中心指南。哦,如果你愿意的话,请随意将此代码带到代码审阅。numpy绝对是一个选项,他们正在使用它;)@帕德雷坎宁厄姆:-)你说得对。谢谢@我只需要一行,这就是我需要的。谢谢itertools+运算符的良好组合。