2012-01-10 3 views
3

Скажем, я получил строку:питона

s = '''1 2 3 
4 5 6 
7 8 9 
''' 

Я хочу, чтобы превратить каждую строку строки s в список значения с плавающей точкой, то есть:

l = [[1.0 2.0 3.0], [4.0 5.0 6.0], [7.0 8.0 9.0]] 

Как я могу сделать это в одной строке?

+0

Вы запрашиваете «список чисел с плавающей точкой» (я предполагаю, что вы имеете в виду значений с плавающей точкой, т.е. 'float' типа), но тогда вы охарактеризовали список списков целых чисел. Что ** точно ** вы хотите? Если он должен быть списком списков, то что определяет, где заканчивается один подсписк, и начинается следующее? –

+1

Почему одна строка? Это домашнее задание? –

+0

@KarlKnechtel, извините, отредактирован. – Alcott

ответ

4
s = '''1 2 3 
4 5 6 
7 8 9''' 

l = [ map(float, i.strip().split(" ")) for i in s.split("\n") ] 

Примечание strip не требуется, когда не «свободное» пространство. Полоса работает как trim например. в php.

8
[[float(v) for v in l.split()] for l in s.strip().split('\n')] 
2

Это итерация через строки сначала, а затем через строки и преобразует строки в поплавки. Если вы хотите конвертировать в целые числа, измените float на int.

[[float(x) for x in line.split(' ')] for line in s.split('\n')] 
Смежные вопросы