2013-06-28 4 views
0

У меня есть список списков, которые я использую в качестве контейнера данных. Я оставил весь свой отладочный код, все идет на консоль, поэтому я могу проследить его, что объясняет некоторые из более избыточных операторов печати.Список списков, помеченных в подсписок

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

[['Arsenal', 2.47, 1.2, 0.89, 'Chelsea', 2.15, 0.8, 1.21,...

подсписков все одинаковой длины (9 элементов), так что я использовал следующее куске, каковая taken from here:

# This function should chunk the 'file', as when we run the above code, 
# we'll end up with one incredibly long list that contains every team on the same line 
def chunker(seq, size): 
    return (seq[pos:pos + size] for pos in xrange(0, len(seq), size)) 

for group in chunker(league_stats, 9): 
    print repr(group) 
    final_stats.append(repr(group)) 
    print "printing final stats" 
    print final_stats 
    print "and here's a line break" 

затем он должен выглядеть следующим образом:

[['Arsenal', 2.47, 1.2, 0.89], ['Chelsea', 2.15, 0.8, 1.21]...]

Но если я печатаю это он показывает, как:

["['Arsenal', 2.47, 1.2, 0.89]", ['Chelsea', 2.15, 0.8, 1.21|]..."]

Если я итерацию через него, по-видимому, чтобы показать, как ожидалось

Так что, кажется, сделал каждый весь Подсписок строка , а не список, верно? У этого есть два странных постучивания - если я обращаюсь к элементам с использованием final_stats [0] [2], например, он дает мне «А» вместо «Арсенала», чего я ожидаю.

Другое, конечно, состоит в том, что я не могу запускать логические операции с элементами списка - что является лучшим способом блокировать длинный список или остановить это?

Если вам нужен полный код (не прилагается сюда для краткости), то это here - Я подозреваю, что этот вопрос был непреднамеренно вызван проблемой в этом сообщении.

Кто-то на этот ответ предложил использовать словари в качестве лучшего контейнера данных - я доволен структурой списка и чувствует (для меня как новичку) немного проще для того, что я хочу делать - эти структуры данных всегда одинаковые размеры, поэтому я не хочу менять типы данных, если я не действительно должен. Я думаю, что это полезная вещь, которую я буду рассматривать в долгосрочной перспективе.

ответ

2

repr() получает представление строки. то есть:

print repr("""Hello! 
this is a test string 
yay.""") 

Возвращает:

'Hello!\nthis is a test string\nyay.' 

В своем коде, это преобразование списка в строку, и именно поэтому, когда вы делаете [0][2] вы получаете характер и не что-то можно было бы ожидать.

Не нужно называть это кодом. Просто добавьте список chuncked.

+0

Muh. Так просто. И точно так же ответят на два вопроса. – Withnail

+0

@ChrisCampbell;) – TerryA

+0

Я согласен, что за 7 минут! – Withnail