Короче говоря, я пытаюсь работать с некоторыми сумасшедшими данными, собранными вчера. Быстрое вложенное для цикла будет делать это очень просто, но прямо сейчас, я просто хочу, чтобы мое вложенное понимание списка работало. На эту тему есть куча сообщений, и я не уверен, что это только я или из-за пятничного вечера, я не могу заставить его работать. Мой список comphrension в формате:Вложенное понимание списка с помощью split() в python
[ [str(j[0], sanitize(j[1]) for j in i.split(',')] for i in b]
где Ь ['string, float\t\n', 'string, float\t\n']
или б может быть объектом файла или любой другой, не имеет значения, чертовски много.
я мог бы просто сделать что-то вроде
for i in b:
out.append(str(j[0]), sanitize(j[1])
Но это должно быть возможным список понимания. ДОЛЖНО!!! И почему-то я не понимаю.
Теперь, на то, что я сделал до сих пор ...
>>> 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]
<type 'str'>
<type 'str'>
<type 'str'>
<type 'str'>
[[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))
означает, что даже если бы я был чтобы написать внешнюю функцию, это не сделало бы трюк. Я просто получаю пустой список из понимания списка.
Что я делаю неправильно? Лямбда может сделать трюк?
Это отлично работает. Обертка i.split (',') в [], похоже, выполняет эту работу. –