Я получаю здесь ошибку TypeError: индексы списка должны быть целыми или кусочками, а не str
Исключение TypeError , выданное python очистителем интерпретатора говорит, что вы пытались использовать объект str
в качестве индекса в вашем списке. Это означает, что переменная name
является str
в вашей программе. Я думаю, вы предполагали, что это будет int
.
Оператор Python for выполняет итерацию членов последовательности по порядку, каждый раз выполняя блок (код под l oop).
Ваша переменная l oop name
будет ссылаться на один из объектов в вашем списке names
в каждой своей итерации. Он не содержит индекс для объекта в последовательности.
Я предполагаю, что вы хотите, чтобы имя каждой строки присутствовало в вашем списке names
. Вот как вы должны это сделать с списками ,
print([n.split(' ')[0] for n in names])
Однако я исправил и ваш код. Попробуйте это:
names = ['John Johnson Doe', 'Jane Janis Doe']
firstnames = []
for name in names:
firstnames.append(name.split(' ')[0])
print(firstnames)
Выходы:
['John', 'Jane']
Если вы все еще хотите indexes
, тогда вы можете взглянуть на перечисление , попробуйте это:
names = ['John Johnson Doe', 'Jane Janis Doe']
firstnames = []
for ndx,name in enumerate(names):
firstnames.append(names[ndx].split(' ')[0])
print(firstnames)