Python 将嵌套列表中的字符串列表转换为列表
Python convert a list of strings in a nested list to list
我有一个名为 last_price 的变量,它输出:
SPY
Date
2015-02-02 00:00:00+00:00 201.92
我想使用以下代码将 last_price 扩展为 1000,1 的形状:
lp_list=[]
lp_len=np.ones(1000)
for o in lp_len:
p=last_price
lp_list.append(p)
但是打印 lp_list 输出:
[ SPY
Date
2015-02-02 00:00:00+00:00 201.92, SPY
Date
2015-02-02 00:00:00+00:00 201.92, SPY
Date
2015-02-02 00:00:00+00:00 201.92
etc...
无论我的最终用途是什么,如何将 lp_list 转换为价格字符串的平面列表 (201.92)?
当我尝试使用列表推导进行扁平化时,我得到以下信息:
>>flat_lp = [y for x in lp_list for y in x]
>>print flat_lp
...['SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY',
etc...
有没有一种方法可以创建一个只有 last_price 变量的平面列表,输出为 201.92,重复 1000 次,如下所示:
>>print lp_list
...[201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92,
etc...
需要考虑两件事:
1) last_price 是数据帧类型:
<class 'pandas.core.frame.DataFrame'>
2) lp_list中的元素需要是float类型的integer
谢谢
如果你只是想重复你的价格,你可以只使用 itertool.repeat
,所以你不需要循环,你可以拆分字符串然后选择最后一个元素 [-1]
索引:
>>> s=""" SPY
... Date
... 2015-02-02 00:00:00+00:00 201.92"""
>>> s.split()
['SPY', 'Date', '2015-02-02', '00:00:00+00:00', '201.92']
>>> from itertools import repeat
>>> repeat(s.split()[-1],10)
repeat('201.92', 10)
>>> list(repeat(float(s.split()[-1]),10))
[201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92]
我有一个名为 last_price 的变量,它输出:
SPY
Date
2015-02-02 00:00:00+00:00 201.92
我想使用以下代码将 last_price 扩展为 1000,1 的形状:
lp_list=[]
lp_len=np.ones(1000)
for o in lp_len:
p=last_price
lp_list.append(p)
但是打印 lp_list 输出:
[ SPY
Date
2015-02-02 00:00:00+00:00 201.92, SPY
Date
2015-02-02 00:00:00+00:00 201.92, SPY
Date
2015-02-02 00:00:00+00:00 201.92
etc...
无论我的最终用途是什么,如何将 lp_list 转换为价格字符串的平面列表 (201.92)?
当我尝试使用列表推导进行扁平化时,我得到以下信息:
>>flat_lp = [y for x in lp_list for y in x]
>>print flat_lp
...['SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY', 'SPY',
etc...
有没有一种方法可以创建一个只有 last_price 变量的平面列表,输出为 201.92,重复 1000 次,如下所示:
>>print lp_list
...[201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92,
etc...
需要考虑两件事:
1) last_price 是数据帧类型:
<class 'pandas.core.frame.DataFrame'>
2) lp_list中的元素需要是float类型的integer
谢谢
如果你只是想重复你的价格,你可以只使用 itertool.repeat
,所以你不需要循环,你可以拆分字符串然后选择最后一个元素 [-1]
索引:
>>> s=""" SPY
... Date
... 2015-02-02 00:00:00+00:00 201.92"""
>>> s.split()
['SPY', 'Date', '2015-02-02', '00:00:00+00:00', '201.92']
>>> from itertools import repeat
>>> repeat(s.split()[-1],10)
repeat('201.92', 10)
>>> list(repeat(float(s.split()[-1]),10))
[201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92, 201.92]