length python string

length - python string substring



Convertir una lista de caracteres en una cadena (11)

Si tengo una lista de caracteres:

a = [''a'',''b'',''c'',''d'']

¿Cómo lo convierto en una sola cadena?

a = ''abcd''


Esta puede ser la forma más rápida:

>> from array import array >> a = [''a'',''b'',''c'',''d''] >> array(''B'', map(ord,a)).tostring() ''abcd''


Esto funciona en JavaScript o Ruby, ¿por qué no en Python?

>>> [''a'', ''b'', ''c''].join('''') Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: ''list'' object has no attribute ''join''

Pero en Python, el método de join está en la clase str :

# this is the Python way "".join([''a'',''b'',''c'',''d''])

Es un poco raro, ¿no? ¿Por qué join no es un método en la list objetos como en JavaScript u otros lenguajes de script populares? Es un ejemplo de cómo piensa la comunidad de Python. Dado que join está devolviendo una cadena, debe colocarse en la clase de cadena, no en la clase de lista, por lo que el str.join(list) significa: unir la lista en una cadena nueva usando str como separador (en este caso, str es una cadena vacía).

De alguna manera me llegó a amar esta forma de pensar después de un tiempo. Puedo quejarme de muchas cosas en el diseño de Python, pero no de su coherencia.


La función de reducción también funciona.

import operator h=[''a'',''b'',''c'',''d''] reduce(operator.add, h) ''abcd''


Si la lista contiene números, puede usar map() con join() .

P.ej:

arr = [3, 30, 34, 5, 9] ''''.join(map(str,arr)) >> 3303459


Si su intérprete de Python es antiguo (1.5.2, por ejemplo, lo que es común en algunas distribuciones de Linux más antiguas), es posible que no tenga join() disponible como método en cualquier objeto de cadena anterior, y en su lugar necesitará usar la cadena módulo. Ejemplo:

a = [''a'', ''b'', ''c'', ''d''] try: b = ''''.join(a) except AttributeError: import string b = string.join(a, '''')

La cadena b será ''abcd'' .


También puedes usar operator.concat() esta manera:

>>> from operator import concat >>> a = [''a'', ''b'', ''c'', ''d''] >>> reduce(concat, a) ''abcd''

Si estás usando Python 3 necesitas prepend:

>>> from functools import reduce

ya que el builtin reduce() se ha eliminado de Python 3 y ahora vive en functools.reduce() .


Utilice el método de join de la cadena vacía para unir todas las cadenas junto con la cadena vacía en el medio, así:

>>> a = [''a'', ''b'', ''c'', ''d''] >>> ''''.join(a) ''abcd''


utilizar join con separador vacío

h = [''a'',''b'',''c'',''d'',''e'',''f''] print ''''.join(h)

o usar reduce con add operador

import operator h=[''a'',''b'',''c'',''d''] reduce(operator.add, h)


str = '''' for letter in a: str += letter print str


g = [''a'', ''b'', ''c'', ''d''] f='''' for i in range(0,len(g)): f=f+g[i] print f


h = [''a'',''b'',''c'',''d'',''e'',''f''] g = '''' for f in h: g = g + f >>> g ''abcdef''