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

1

Я пытаюсь выполнить итерацию по списку ширины поплавка, который меняется.

[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

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

EDIT: Python Версия 2.4

  • 0
    какая версия Python?
Теги:
string
printing
width

2 ответа

1
Лучший ответ

Я изменил ваш код несколькими способами. Теперь он работает здесь (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'

Значение ширины в строке формата не является float, а двумя ints, разделенными символом a . ,

2

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

TypeError: * wants int

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

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'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню