#python
#python
Вопрос:
Я хочу иметь результат, который имеет ту же длину, что и исходный список.
listo = ['med', 'lam', 'rihanna', 'shity', 'lem']
lis = []
for i, v in enumerate(listo):
if 'lam' in v:
lis.append(v)
if 'med' in v:
lis.append(v)
else:
lis.append('no')
print(lis)
print(len(listo))
print(len(lis))
Комментарии:
1.
elif 'med' in v:
2. вместо этого просто сделайте второй
if
elif
3.
lis = [i if i in {'lam', 'med'} else 'no' for i in listo]
4. хотя я не знаю, почему вы это
enumerate
делаете..
Ответ №1:
Самое быстрое изменение — сделать второе if
elif
значение таким образом, чтобы к выходным данным для каждого элемента во входных данных добавлялось только одно значение.
listo = ['med', 'lam', 'rihanna', 'shity', 'lem']
lis = []
for i, v in enumerate(listo):
if 'lam' in v:
lis.append(v)
elif 'med' in v:
lis.append(v)
else:
lis.append('no')
Более питонический способ написания того же кода — использовать понимание списка.
listo = ['med', 'lam', 'rihanna', 'shity', 'lem']
lis = [x if x in ('lam', 'med') else 'no' for x in listo]
Ответ №2:
Ваш второй оператор if должен быть elif . Вот так:
listo = ['med', 'lam', 'rihanna', 'shity', 'lem']
lis = []
for i, v in enumerate(listo):
if 'lam' in v:
lis.append(v)
elif 'med' in v:
lis.append(v)
else:
lis.append('no')
print(lis)
print(len(listo))
print(len(lis))
Когда это просто обычное, если ошибка возникает при значении ‘lam’. Первый оператор if имеет значение true, поэтому он добавляет ‘lam’ к lis, но второй оператор false, поэтому он также добавляет ‘no’ к lis.