Python yield возвращает символы вместо строки из одноэлементного кортежа - PullRequest
2 голосов
/ 18 августа 2010

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

self.commands = ("command1")
...
for command in self.commands:
        yield command            # returns 'c' not 'command1'

как я могу это исправить?

Спасибо

Ответы [ 2 ]

6 голосов
/ 18 августа 2010

Кортеж, имеющий только 1 элемент, должен быть написан с запятой .

self.commands = ("command1",)
0 голосов
/ 18 августа 2010
self.commands = ["command1"]

Вы никогда не сообщали циклу, что у вас есть список, поэтому он обрабатывает строку как последовательность.

edit: или вы можете просто исправить кортеж, как рекомендовано ... Я предполагал, что вы захотите использовать список вместо кортежа.

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