所以我正在编写一段代码,我正在尝试找出最有效,最快速的方法将列表拆分成我需要的数字。
以下是我正在使用的代码:
eq=[' ', '1', '.', '3', '3', '5', '9', '2', '0', 'e', '0', '6', ' ', '4', '.', '0', '2', '0', '7', '4', '9', 'e', '0', '1']
coeff=[]
i=0
while i < len(eq)-1:
temp=""
if eq[i]==' ':
for x in range(i+1,len(eq)):
if eq[x]== ' ':
break
else:
temp+=eq[x]
coeff.append(float(temp))
i=x
print coeff
这确实给了我想要的结果,[1335920.0, 40.20749]
,但我想知道是否有更好的方法来做到这一点。
请注意,这些数字来自R,因此,我无法保证它们的格式始终完全相同,因此切换列表不是一种选择。
答案 0 :(得分:1)
In [1]: eq = [' ', '1', '.', '3', '3', '5', '9', '2', '0', 'e', '0', '6', ' ', '4', '.', '0', '2', '0', '7', '4', '9', 'e', '0', '1']
In [2]: map(float, ''.join(eq).strip().split(' '))
Out[2]: [1335920.0, 40.20749]
说明:
''.join(eq)
加入列表中的字符串
strip()
删除前导空格和尾随空格
split(' ')
将字符串拆分为单个空格
map
将float
应用于列表