Python列表和类型错误

时间:2011-05-03 14:30:00

标签: python list exception types

我用Python编写了这段代码:

if type(data).__name__=='list':
                print type(data).__name__
                print ",".join(data)

它给了我这个错误:

    print ",".join(data)
exceptions.TypeError: sequence item 0: expected string, list found

怎么可能?!?

提前感谢任何帮助。

6 个答案:

答案 0 :(得分:3)

您似乎有一个列表列表。尝试:

",".join(str(x) for x in data)

答案 1 :(得分:1)

str.join()只能加入一系列字符串。显然,您的列表中包含的项目本身就是一个列表。

此外,如果您确实需要检查对象的类型,那么更好的方法是

if isinstance(data, list):
    ...

答案 2 :(得分:0)

data的第一个元素是list。它必须是一个字符串,以便str.join()如图所示工作。事实上,所有元素都必须。

答案 3 :(得分:0)

不要明确检查类型。如果确实需要,请使用isinstance

由于data的内容而不是其类型,出现错误。它必须是str.join方法的字符串列表才能使用它。

答案 4 :(得分:0)

列表的第一个元素也是一个列表,而不是一个字符串。

此外,您无需执行type(data).__name__=='list' - 只需type(data) is list

更好 - 只需查看isinstance,因为在大多数情况下您并不真正关心特定类型。

答案 5 :(得分:0)

join需要一个可迭代的字符串。在你的情况下似乎发生的是你的列表的第一个元素是另一个列表。这就是造成错误的原因。

顺便说一句,if type(data).__name__=='list': ...和代码一样是非Pythonic。