Присоединение к списку списков - PullRequest
1 голос
/ 20 апреля 2020

Я настоящий новичок ie с Python и борюсь с отсутствием массивов. Я мог бы использовать numpy, конечно, но это похоже на полицейского для того, кто пытается учиться. Итак, с этим сказано, почему я не могу использовать добавление со списком списков? Вот мой код

myList = ['Tom','Colin']

# so now my list is ['Tom', 'Colin']
myList.append('Tom')

# Append works so now my list is ['Tom', 'Colin', 'Tom'] Yes I did mean to have two Tom entries

myListOfLists=['Tom', '24'],['Colin', '25']
row =  ['Tom', '31']

myListOfLists.append(row)
# this gives the dreaded AttributeError: 'tuple' object has no attribute 'append' error

Я не понимаю, почему я не могу добавить в список списков

Ответы [ 4 ]

2 голосов
/ 20 апреля 2020

myListOfLists - это не список списков. Это кортеж списков.

Заменить

myListOfLists=['Tom', '24'],['Colin', '25']

на

myListOfLists=[['Tom', '24'],['Colin', '25']]

tuple не имеет метода append, но list имеет .

myListOfLists=['Tom', '24'],['Colin', '25']
print(type(myListOfLists))
# <class 'tuple'>
print(hasattr(myListOfLists, 'append'))
# False

myListOfLists=[['Tom', '24'],['Colin', '25']]
print(type(myListOfLists))
# <class 'list'>
print(hasattr(myListOfLists, 'append'))
# True
1 голос
/ 21 апреля 2020

вы не можете использовать list.append, потому что myListOfLists - это tuple


, у вас может быть новый список, в который вы распакуете предыдущие значения myListOfLists и включите также ваш row:

myListOfLists=['Tom', '24'],['Colin', '25']
row =  ['Tom', '31']

myListOfLists = [*myListOfLists, row]

# [['Tom', '24'], ['Colin', '25'], ['Tom', '31']]
1 голос
/ 20 апреля 2020

Когда вы пишете

myListOfLists=['Tom', '24'],['Colin', '25']

, вы не создаете список списка, но пара (кортеж из 2 элементов), содержащая два списка по два элемента в каждом.

Кортеж не может быть модифицированным (мы говорим, что они неизменны), поэтому вызов append для кортежа вызывает ошибку.

Если вам нужен список списка, вы хотите написать

myListOfLists=[['Tom', '24'],['Colin', '25']]

и ваш код будет работать.

0 голосов
/ 20 апреля 2020

Вы должны заключить myListOfLists в скобки []:

myListofLists = [['Tom', '24'],['Colin', '25']]
myListofLists.append(['Tom', '31'])
print(myListofLists)
# returns [['Tom', '24'], ['Colin', '25'], ['Tom', '31']]

Видите, теперь у вас есть список списков!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...