Что такое хороший способ сделать some_string.split('')
в python? Этот синтаксис дает ошибку:
a = '1111'
a.split('')
ValueError: empty separator
Я хотел бы получить:
['1', '1', '1', '1']
Что такое хороший способ сделать some_string.split('')
в python? Этот синтаксис дает ошибку:
a = '1111'
a.split('')
ValueError: empty separator
Я хотел бы получить:
['1', '1', '1', '1']
Используйте list()
:
>>> list('1111')
['1', '1', '1', '1']
В качестве альтернативы вы можете использовать map()
:
>>> map(None, '1111')
['1', '1', '1', '1']
Разница во времени:
$ python -m timeit "list('1111')"
1000000 loops, best of 3: 0.483 usec per loop
$ python -m timeit "map(None, '1111')"
1000000 loops, best of 3: 0.431 usec per loop
Можно напрямую записывать строки для
>>> list('1111')
['1', '1', '1', '1']
или использования списков
>>> [i for i in '1111']
['1', '1', '1', '1']
второй способ может быть полезен, если вы хотите разделить строки на подстроки длиной более 1 символа
>>> some_string = '12345'
>>> [some_string[i:i+2] for i in range(0, len(some_string), 2)]
['12', '34', '5']
Строки являются итерабельными и могут быть проиндексированы, поэтому вам совсем не нужно разделить его:
>>> for char in '11111':
... print char
...
1
1
1
1
1
>>> '11111'[4]
'1'
Вы можете "разбить" его на вызов в список, но это не имеет большого значения:
>>> for char in list('11111'):
... print char
...
1
1
1
1
1
>>> list('11111')[4]
'1'
Поэтому вам нужно сделать это, только если ваш код явно ожидает список. Например:
>>> list('11111').append('2')
>>> l = list('11111')
>>> l.append(2)
>>> l
['1', '1', '1', '1', '1', 2]
Это не работает с прямой строкой:
>>> l.append('2')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'append'
В этом случае вам понадобится:
>>> l += '2'
>>> l
'111112'
s="Amalraj"
l=[i for i in s]
print(l)
['A', 'm', 'a', 'l', 'r', 'a', 'j']
s="Amalraj"
l=list(s)
print(l)
['A', 'm', 'a', 'l', 'r', 'a', 'j']
import re; # importing regular expression module
s="Amalraj"
l=re.findall('.',s)
print(l)
['A', 'm', 'a', 'l', 'r', 'a', 'j']