Estou tentando pegar uma seqüência e anexá-la a todas as seqüências contidas em uma lista e, em seguida, ter uma nova lista com as seqüências concluídas. Exemplo:
list = ['foo', 'fob', 'faz', 'funk']
string = 'bar'
*magic*
list2 = ['foobar', 'fobbar', 'fazbar', 'funkbar']
Tentei fazer loops e uma tentativa de compreensão da lista, mas era lixo. Como sempre, qualquer ajuda, muito apreciada.
list
pois é um builtin.Respostas:
A maneira mais simples de fazer isso é com uma compreensão de lista:
Observe que eu evitei usar nomes internos,
list
porque isso oculta ou oculta os nomes internos, o que não é muito bom.Além disso, se você realmente não precisa de uma lista, mas apenas de um iterador, uma expressão de gerador pode ser mais eficiente (embora provavelmente não importe em listas curtas):
Estes são muito poderosos, flexíveis e concisos. Todo bom programador de python deve aprender a manejá-los.
fonte
(s + mystring for s in mylist)
["{}) {}".format(i, s) for i, s in enumerate(mylist)]
list2 = ["mystring" + s for s in mylist]
=list2 = ['barfoo', 'barfob', 'barfaz', 'barfunk']
Isso imprimirá:
fonte
map
parece a ferramenta certa para o trabalho para mim.Consulte esta seção sobre ferramentas de programação funcional para obter mais exemplos de
map
.fonte
Executando o seguinte experimento da maneira pitônica:
parece ser ~ 35% mais rápido que o uso óbvio de um loop for como este:
Experimentar
Resultados
fonte
Estendendo um pouco para "Anexando uma lista de cadeias a uma lista de cadeias":
Resultado:
dtype odject pode ser convertido ainda mais str
fonte
at = np.full(fill_value='@',shape=1,dtype=object)
ou simplesmente:at = np.array("@", dtype=object)
você pode usar o lambda dentro do mapa em python. escreveu um gerador de códigos cinza. https://github.com/rdm750/rdm750.github.io/blob/master/python/gray_code_generator.py # seu código vai aqui '' '' o código n-1 bit, com 0 precedido por cada palavra, seguido pelo código n-1 bit na ordem inversa, com 1 anexado a cada palavra. '' '
fonte
Atualizando com mais opções
Evite usar palavras-chave como variáveis como 'list', renomeou 'list' como 'list1'
fonte
Aqui está uma resposta simples usando
pandas
.fonte
E não use
list
como nome; obscurece o tipo interno.fonte
'%sbar' % (x,)
invés de'%sbar' % x
? Por que nãox + 'bar'
?Usar nomes como "lista" para os nomes de suas variáveis é ruim, pois substituirá / substituirá os componentes internos.
fonte
Apenas no caso de
fonte