Я пытаюсь создать цикл 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
в своем заявлении о добавлении.