Как добавить строку к каждой строке внутри списка?

Я пытаюсь создать цикл for, чтобы добавить содержимое первого списка num в num2 + слово тысяча. я ищу nums2 = ['one thousand', 'two thousand', 'three thousand', 'four thousand']. Когда я пытаюсь запустить это, все, что мне дается, это list indices must be integers or slices, not str. Какие-либо предложения?

nums = ['one', 'two', 'three', 'four']
nums2 = []

for i in nums:
     nums2.append(nums[i] + ' thousand')

Редактировать (13:13 EST, 10.12.2020):

Этот вопрос уже задавали! Мой плохой.
Добавление той же строки в список строк в Python

i — это фактическое значение, а не индекс. Нет необходимости снова вызывать nums в своем заявлении о добавлении.
Chris 10.12.2020 18:59
for i in nums: может быть for i in range(len(nums)):. Или просто измените nums[i] на i.
Random Davis 10.12.2020 19:00

@RandomDavis это не обязательно должен быть индекс. Просто используйте значение.

Peter Wood 10.12.2020 19:02

Возможно, Вы имели в виду: nums2 = [num + ' thousand' for num in nums]?

quamrana 10.12.2020 19:02
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
4
121
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Когда вы перебираете список nums, i — это каждое значение в списке; на первой итерации i равно one, а на второй i равно two.

Поэтому, когда вы пытаетесь получить доступ к nums[i], вы пытаетесь получить доступ к nums["one"] (на первой итерации), которого, очевидно, не существует.

Чтобы решить эту проблему, вы можете изменить цикл for на цикл, основанный на индексе, используя range:

for i in range(len(nums)):
  nums2.append(nums[i] + ' thousand')

Или вы можете просто вообще прекратить попытки доступа к списку из цикла и использовать значение i в качестве префикса для добавления thousand к:

for i in nums:
  nums2.append(i + ' thousand')

Отличное объяснение, спасибо! Я очень ценю помощь.

Gavin Wood 10.12.2020 19:17

В этом случае «i» — это строка, поскольку строки — это элементы списка. Попробуйте просто использовать i вместо nums[i] в ​​добавлении. Пример:

nums = ['one', 'two', 'three', 'four']
nums2 = []

for i in nums:
     nums2.append(i + ' thousand')

переменная i в вашем цикле for относится к отдельным элементам списка nums, которые в данном случае являются строками. Вам нужны целые числа в качестве индексов, поэтому в вашем случае цикл for можно изменить как:

for i,k in enumerate(nums):
 nums2.append(nums[i] + ' thousand')

Вы можете проверить правильность написания, напечатав nums2:

print(nums2)

Можешь попробовать:

nums = ["Ford", "Volvo", "BMW"]
nums2 = []

for i in nums:
  nums2.append(i + ' thousand')

Другие вопросы по теме