Список Python и ошибка типа - PullRequest
1 голос
/ 03 мая 2011

Я написал этот код на 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 ]

3 голосов
/ 03 мая 2011

Похоже, у вас есть список списков.Попробуйте:

",".join(str(x) for x in data)
1 голос
/ 03 мая 2011

str.join() может присоединиться только к последовательности строк. Очевидно, ваш список содержит элемент, который снова является списком.

Кроме того, если вам действительно нужно проверить тип объекта, лучший способ сделать это -

if isinstance(data, list):
    ...
0 голосов
/ 03 мая 2011

join ожидает итерацию строк . В вашем случае, похоже, происходит то, что первым элементом вашего списка является другой список. Это то, что вызывает ошибку.

Кроме того, if type(data).__name__=='list': ... настолько непитоничен, насколько и код.

0 голосов
/ 03 мая 2011

Первым элементом вашего списка является также список, а не строка.

Также вам не нужно делать type(data).__name__=='list' - просто type(data) is list

Еще лучше - простосверьтесь с isinstance, так как в большинстве случаев вас не интересует конкретный тип.

0 голосов
/ 03 мая 2011

Не проверять явно типы.Если вам нужно, используйте isinstance .

Ошибка появляется из-за содержимого data, а не его типа.Это должен быть список строк для метода str.join для работы с ним.

0 голосов
/ 03 мая 2011

Первый элемент data - это list. Это должна быть строка, чтобы str.join() работал так, как показано. На самом деле все элементы должны.

...