Python извлекает список неизвестной длины

#python

#python

Вопрос:

У меня есть строка от пользователя. Он должен содержать запятую, чтобы разделить ее и присвоить переменным. Но что, если пользователь пропустит запятую? Конечно, я могу проверить длину разделенной строки в ветвях if-else, но, возможно, есть другой способ, я имею в виду, что присвоение во время списка имеет значения. Например

 a, b, c, d, e = list(range(3))  # 'a' and 'b' are None or not exists
 

Комментарии:

1. пожалуйста, вставьте строку и ожидаемый результат

2. Почему именно вы хотите поместить значения в отдельные переменные? Почему бы просто не использовать список?

3. В этом примере требуется ли пользователю иметь ровно 5 значений, разделенных запятыми? Если это так, вы можете перехватить поднятый ValueError и предложить пользователю повторить попытку.

Ответ №1:

Вы могли бы сделать что-то вроде этого:

 >>> alist=list(range(3))
>>> alist
[0, 1, 2]
>>> a,b,c,*d=alist
>>> a,b,c
(0, 1, 2)
>>> d
[]
 

Если элементов больше нет, d это пустой список. Он использует оператор распаковки * . Не лучшее возможное решение для больших списков, поэтому я бы все равно определил для этого функцию. Для небольших случаев это работает хорошо. (Вы могли бы предположить d==[] , что в нем больше нет элементов alist ) Например, вы могли бы добавить:

 return False if not d else return True
 

Ответ №2:

Вы можете расширить список значениями None перед извлечением.

 li = list(range(3))
expected_size = 5
missing_size = expected_size - len(li)
none_li = [None] * missing_size
new_li = li   none_li
a, b, c, d, e = new_li