2016-02-10 1 views
-1

Я изучаю некоторый питон, и у меня есть следующая программа:Python постижение и структуры данных

sentence = "the quick brown fox jumps over the lazy dog" 
words = sentence.split() 

print "\n What the hell is this???" 
word_lengths = [(word, len(word)) for word in words if word != "the".lower()] 
print word_lengths 

What the hell is this??? 
[('quick', 5), ('brown', 5), ('fox', 3), ('jumps', 5), ('over', 4), ('lazy', 4), ('dog', 3)] 

Я не понимаю, странный списка, который я получаю с последним блоком O кодом ..

Какая структура?

Заранее благодарен!

+7

Это список кортежей. В чем проблема? –

+4

Вы можете прочитать о кортежах и последовательностях [здесь] (https://docs.python.org/3.5/tutorial/datastructures.html#tuples-and-sequences). –

+0

Спасибо всем, вот что мне нужно! – S4rg0n

ответ

2

Это список кортежей. Кортеж просто неизменяемый список, в виде x, y, z или (x, y, z)

Когда вы вызываете этот код:

word_lengths = [(word, len(word)) for word in words if word != "the".lower()] 

Вы спросите Python для изготовления списка [а, Ь], содержащие кортежи (х, у) причем x - это слово, а y - длина слова.

Это семантический почти эквивалентно:

word_lengths = [[word, len(word)] for word in words if word != "the".lower()] 

С единственным исключением, что вы не можете изменить кортеж после его создания.

Примечание: создать кортеж из 1 элемента, вам нужно добавить запятую различать с выражением в скобках: (a,)

+0

Спасибо вам большое! – S4rg0n