我有一个波长的光谱作为一个列表,还有一些我在公式中使用的其他列表(使用tmm.tmm\u核心). 如果我只是对所有波长做同样的事情,有什么比迭代波长更有效的方法吗? 示例
def go(n, thk, theta):
#do stuff
return(something)
wv = [1, 2, 3, 4]
a_vec = [3, 7, 3, 9]
b_vec = [6, 5, 9, 3]
c_vec = [0, 1, 8, 9]
theta = 0
th = [10, 1, 10]
final = []
for i in range(len(wv)):
n = [a[i], b[i], c[i]]
answer = go(n, th, theta)
final.append(answer)
实际上可能有5000-10000行。当我按下go键时,它似乎有点滞后,我想这是因为迭代。非常新的优化,所以我没有使用任何基准工具或任何东西。你知道吗
您可以将所有列表放在一个自定义列表中,如
C_list
,并使用map
创建一个新列表all_len
包含所有列表的长度,然后使用列表理解创建列表final
:另外,如果
a
和b
和c
的长度相等,则可以使用zip
函数压缩,然后拒绝多重索引:我想您正在寻找Python中的
map
函数!你知道吗它接受一个函数(在上面的例子中是匿名lambda函数)、一个或多个列表并返回另一个列表。在函数的每次迭代中,两个列表都被迭代,结果被添加到新的列表中。您不需要局限于lambda语句的表达能力;您还可以使用全局定义的函数,如下所示:
如果必须对列表中的每一项执行操作,则必须遍历列表中的每一项。但是,您可以通过使用列表理解来提高速度:List Comprehensions
相关问题 更多 >
编程相关推荐