【问题标题】:Python yield returns characters instead of string from single-element tuplePython yield 从单元素元组返回字符而不是字符串
【发布时间】:2010-08-18 10:55:11
【问题描述】:

我正在使用yield 来处理列表的每个元素。但是,如果元组只有一个字符串元素,yield 返回字符串的字符,而不是整个字符串:

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

我该如何解决这个问题?

谢谢

【问题讨论】:

  • 那不是元组。是什么让您认为 self.commands 是一个元组?你用的是什么教程?
  • 我认为圆括号表示一个元组。正在阅读diveintopython,但可能读错了。
  • diveintopython.org/getting_to_know_python/tuples.html - "元组的定义方式与列表相同,只是整个元素集都用括号而不是方括号括起来。"
  • @timmy:括号(圆括号)仅表示分组表达式,例如(1+2)*3。您不需要在元组周围加上括号,例如x = a,b 等价于 x = (a,b)
  • @timmy:好的开始,请继续阅读并引用下一节。

标签: python yield


【解决方案1】:

只有 1 个元素的元组应该是 written with a trailing comma

self.commands = ("command1",)

【讨论】:

  • ...括号是可选的。
  • @timmy:如果对您有帮助,最好接受答案。继续点击答案旁边的“勾号”图标。
  • @manoj,shahjapan - 如果你们有一点耐心,那就太好了。我不能立即接受答案
【解决方案2】:
self.commands = ["command1"]

你从来没有告诉循环你有一个列表,所以它把字符串当作序列。

编辑:或者您可以按照建议修复元组...我假设您想使用列表而不是元组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-16
    • 2019-11-04
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    • 2019-08-08
    相关资源
    最近更新 更多