#python #python-3.x #string #list #integer
#python #python-3.x #строка #Список #целое число
Вопрос:
В следующем списке я хочу заменить «Солнце» на 0, а «Дождь» на 1. Как я могу это сделать?
precipitation = ["Sun", "Rain", "Rain", "Sun", "Sun", "Sun", "Sun", "Sun", "Sun", "Sun", "Rain", "Rain", "Rain", "Rain"]
for i in precipitation:
if precipitation[i] == "Sun":
precipitation[i] = 0
else:
precipitation[i] = 1
Комментарии:
1.
for i in precipitation
выдает вам фактические элементы в списке, а не их соответствующие индексы. Самое простое исправление в вашем кодеfor i in range(len(precipitation)):
— это то, что будетi
принимать значение индексов. Существуют и более простые решения, но это наиболее точно соответствует тому, что у вас есть сейчас.2. [0, если x!=»Sun», иначе 1 для x в осадках]
3. Шивам, ты можешь показать свой новый код, который дает тебе все единицы? И, как указывает @TomRon, есть более простые решения.
Ответ №1:
Вы можете сделать это, используя понимание списка:
precipitation = [0 if x == 'Sun' else 1 for x in precipitation]
Комментарии:
1. Я предполагаю, что спрашивающий хочет 0 для ‘Sun’.
2. @JenilDave изменил его. Спасибо!
Ответ №2:
Разработка ответа @Gabip, используя тот факт, что логические значения численно представлены как 0 и 1:
[int(x=='Sun') for x in precipitation]
Ответ №3:
Попробуйте это…
precipitation = ["Sun", "Rain", "Rain", "Sun", "Sun", "Sun", "Sun", "Sun", "Sun", "Sun", "Rain", "Rain", "Rain", "Rain"]
for i in range(len(precipitation)):
if precipitation[i] == "Sun":
precipitation[i] = 0
else:
precipitation[i] = 1
print(precipitation)
Ответ №4:
Добавление к уже имеющимся ответам, используя map()
list(map(lambda x: 0 if x=='Sun' else 1,a))
Вы можете попробовать это, чтобы избежать циклов и понимания списка