Я пытаюсь создать цикл 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
for i in nums: может быть for i in range(len(nums)):. Или просто измените nums[i] на i.
@RandomDavis это не обязательно должен быть индекс. Просто используйте значение.
Возможно, Вы имели в виду: nums2 = [num + ' thousand' for num in nums]?






Когда вы перебираете список 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')
Отличное объяснение, спасибо! Я очень ценю помощь.
В этом случае «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')
i— это фактическое значение, а не индекс. Нет необходимости снова вызыватьnumsв своем заявлении о добавлении.