Я пытаюсь выполнить итерацию по списку ширины поплавка, который меняется.
[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
Я изменил ваш код несколькими способами. Теперь он работает здесь (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 .
,
Вы должны получить сообщение об ошибке
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'