Python Итерация по списку ширин с плавающей точкой: TypeError: последовательность ожидается, генератор найден - PullRequest
1 голос
/ 07 ноября 2011

Я пытаюсь перебрать список значений ширины с плавающей точкой.

[10.5, 15.5, 3.7]  <- Randomly generated 

Я использую этот список с плавающей точкой, чтобы создать пробелы между списком строк, которые я пытаюсь распечатать.Я делаю это через

print ''.join('%*s' %i for i in zip(WIDTHS, LIST_OF_STRINGS))

Я получаю сообщение об ошибке

TypeError: sequence expected, generator found

Кто-нибудь может объяснить, почему я получаю эту ошибку?

РЕДАКТИРОВАТЬ: Python версии 2.4

Ответы [ 2 ]

2 голосов
/ 07 ноября 2011

Вы должны получить сообщение об ошибке

TypeError: * wants int

Сначала преобразуйте числа с плавающей запятой в целые:

widths = map(int, widths)

Пример:

>>> widths = [10.5, 15.5, 3.7]
>>> s = ["a", "b", "c"]
>>> widths = map(int, widths)
>>> ''.join('%*s' %i for i in zip(widths, s))
'         a              b  c'
1 голос
/ 07 ноября 2011

Я изменил ваш код несколькими способами.Теперь это работает здесь (Python 2.7):

strings = ['a','b','c']
widths1 = [10, 15, 3]
widths2 = [5, 5, 7]
''.join('%*.*s' %i for i in zip(widths1, widths2, strings))

приводит к

'         a              b  c'

Значение ширины в строке формата - это не число с плавающей точкой, а два целых, разделенных ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...