#python
#python
Вопрос:
Существует ли какое-либо другое значение, кроме строки с одним символом, такое, что:
v = '?' # any char
assert [x for x in v] == [x for x in [v]]
? Я спрашиваю, потому что из-за этой «аномалии» я должен обрабатывать строки особым образом.
Я попытался сделать свой вопрос минимальным. Чтобы ответить на комментарии, это связано с API, принимающим последовательность элементов, но в подавляющем большинстве случаев передается только один элемент, поэтому было решено принять также один элемент.
Под «аномалией» я подразумеваю, что это похоже на известную математическую задачу о множестве, содержащем само себя.
Комментарии:
1. Зачем использовать
[v]
и какие аномалии?2. Возможная проблема XY: в каком контексте вам нужно рассматривать
str
значение как фактически не итерируемое?3. В Python символ char может быть выражен только в виде строки, которая представляет собой набор символов, поэтому мало чем отличается от списка, который также является коллекцией.
4. Сравните с
v = 'abc'
, и причина такого поведения будет очевидна.5.
l = []; l.append(l)
, но в большинстве случаев, когда вы хотели бы обрабатывать строки по-другому, это всего лишь строки и байтовые строки, даже если что-то другое может иметь такое же поведение при итерации, и даже при том, что итерация по байтовой строке теперь приводит к целым числам.