长话短说,我正试图处理我昨天收集的一些疯狂的数据。一个快速嵌套的for循环可以很容易地做到这一点,但现在,我只想让我的嵌套列表理解工作。有很多关于这个主题的帖子,我不确定是我还是因为星期五晚上,我不能让它发挥作用。我的列表符合以下格式:[ [str(j[0], sanitize(j[1]) for j in i.split(',')] for i in b]
其中b是['string, float\t\n', 'string, float\t\n']或者b可能是一个file对象或者其他什么,这无关紧要。在
我可以做一些
^{pr2}$
但是,通过列表理解应该是可能的。它应该!!!而且,不知怎么的,我没有把它弄对。在
现在,谈谈我到目前为止所做的。。。在>>> b
['08:54:55, 0.031250\n', '08:55:57, 0.031250\n']
>>> [i.split(',') for i in b]
[['08:54:55', ' 0.031250\n'], ['08:55:57', ' 0.031250\n']]
我想要的:[['08:54:55', 0.031250], ['08:55:57', 0.031250]]
多个列表的理解可以做到:
比如:[ [j[0], j[1]] for j in i.split(',') for i in b] # the cleaning/str/float would be something like: str(j[0]), float(j[1])
但是,这就是我得到的。在>>> [ [j[0], j[1]] for j in i.split(',') for i in b]
[['0', '8'], ['0', '8'], [' ', '0'], [' ', '0']]
>>>
>>> [ [j[1]] for j in i.split(',') for i in b]
[['8'], ['8'], ['0'], ['0']]
对j[0]或j[1]的任何尝试都不会成功。在
为了弄清楚到底发生了什么,我做了这个:>>> [ [ pprint(type(j)) for j in i.split(',')] for i in b]
[[None, None], [None, None]]
如果我不搞j[0]或j[1]>>> [ [ j for j in i.split(',')] for i in b]
[['08:54:55', ' 0.031250\n'], ['08:55:57', ' 0.031250\n']]
带有pprint(type(j))的示例意味着即使我要编写一个外部函数,它也不会起作用。我只是从列表理解中得到一个空列表。在
我做错什么了?一个lambda可能会成功吗?在