strings - python retirar parte de uma string




Junte-se a uma lista de itens com diferentes tipos como string em Python (6)

Eu preciso entrar em uma lista de itens. Muitos dos itens na lista são valores inteiros retornados de uma função. ie:

myList.append(munfunc()) 

Como devo converter o resultado retornado em uma string para uni-lo à lista?

Preciso fazer o seguinte para cada valor inteiro:

myList.append(str(myfunc()) 

Existe uma maneira mais Python para resolver problemas de fundição?


Chamar str(...) é a maneira Python de converter algo em uma string.

Você pode querer considerar por que você quer uma lista de seqüências de caracteres. Você poderia mantê-lo como uma lista de números inteiros e converter apenas os inteiros em strings quando precisar exibi-los. Por exemplo, se você tem uma lista de números inteiros, então você pode fazer isso:

print ', '.join(str(x) for x in list_of_ints)

Eu não tenho certeza do que você quer dizer com "join", porque a gramática que você usa em sua pergunta é muito ruim, mas se eu entendi sua pergunta corretamente, não há nada errado em passar inteiros para str. Uma razão pela qual você pode não fazer isso é que myList é realmente uma lista de inteiros, por exemplo, seria razoável somar os valores na lista. Nesse caso, não passe seus ints para str antes de anexá-los a myList. Se você não converter em strings antes de acrescentar, você pode construir uma string grande fazendo algo como

', '.join(map(str, myList))

Por exemplo:

lst_points = [[313, 262, 470, 482], [551, 254, 697, 449]]

lst_s_points = [" ".join(map(str, lst)) for lst in lst_points]
print lst_s_points
# ['313 262 470 482', '551 254 697 449']

Quanto a mim, quero adicionar um str antes de cada lista str:

# here o means class, other four points means coordinate
print ['0 ' + " ".join(map(str, lst)) for lst in lst_points]
# ['0 313 262 470 482', '0 551 254 697 449']

Ou lista única:

lst = [313, 262, 470, 482]
lst_str = [str(i) for i in lst]
print lst_str, ", ".join(lst_str)
# ['313', '262', '470', '482'], 313, 262, 470, 482

lst_str = map(str, lst)
print lst_str, ", ".join(lst_str)
# ['313', '262', '470', '482'], 313, 262, 470, 482

Seu problema é bastante claro. Talvez você esteja procurando estender, para adicionar todos os elementos de outra lista a uma lista existente:

>>> x = [1,2]
>>> x.extend([3,4,5])
>>> x
[1, 2, 3, 4, 5]

Se você quiser converter inteiros em strings, use str () ou interpolação de string, possivelmente combinada com uma compreensão de lista, ou seja,

>>> x = ['1', '2']
>>> x.extend([str(i) for i in range(3, 6)])
>>> x
['1', '2', '3', '4', '5']

Tudo isso é considerado pythonic (ok, uma expressão geradora é ainda mais pythonic mas vamos ficar simples e no tópico)


função de mapa em python pode ser usada. Leva dois argumentos. Primeiro argumento é a função que deve ser usada para cada elemento da lista. O segundo argumento é o iterável .

a = [1, 2, 3]   
map(str, a)  
['1', '2', '3']

Depois de converter a lista em string, você pode usar a função simple join para combinar a lista em uma única string

a = map(str, a)    
''.join(a)      
'123'

a=[1,2,3]
b=[str(x) for x in a]
print b

acima método é a maneira mais fácil e mais geral para converter a lista em string. outro método curto é-

a=[1,2,3]
b=map(str,a)
print b




list