【发布时间】:2012-12-11 11:05:19
【问题描述】:
将较长的语句附加到列表时,我觉得append 变得难以阅读。我想要一种适用于动态列表创建的方法(即不需要先用零初始化等),但我似乎无法想出另一种方法来做我想做的事。
示例:
import math
mylist = list()
phi = [1,2,3,4] # lets pretend this is of unknown/varying lengths
i, num, radius = 0, 4, 6
while i < num:
mylist.append(2*math.pi*radius*math.cos(phi[i]))
i = i + 1
虽然append 工作得很好,但我觉得不如:
mylist[i] = 2*math.pi*radius*math.cos(phi[i])
但这不起作用,因为该元素尚不存在于列表中,产生:
IndexError: list assignment index out of range
我可以只是将结果值分配给临时变量,然后附加它,但这看起来很丑陋且效率低下。
【问题讨论】:
-
您可以包装原来的
__setitem__运算符并编写一个检查边界并根据需要调用append的运算符。 -
我一定会调查的;不过,我并不立即熟悉如何做到这一点。如果您有时间,将不胜感激。谢谢!