Domanda

Quando l'estrazione dei dati da una lista in questo modo

line[0:3], line[3][:2], line[3][2:]

Ricevo un array e due variabili dopo di esso, come dovrebbe essere previsto:

(['a', 'b', 'c'], 'd', 'e')

Ho bisogno di manipolare l'elenco in modo che il risultato finale è

('a', 'b', 'c', 'd', 'e')

Come? Grazie.

P.S. Sì, lo so che posso annotare il primo elemento come line[0], line[1], line[2], ma penso che sia una soluzione piuttosto scomoda.

È stato utile?

Soluzione

from itertools import chain
print tuple(chain(['a', 'b', 'c'], 'd', 'e'))

Output:

('a', 'b', 'c', 'd','e')

Altri suggerimenti

Prova questo.

line = ['a', 'b', 'c', 'de']
tuple(line[0:3] + [line[3][:1]] + [line[3][1:]])
('a', 'b', 'c', 'd', 'e')

NOTA: Penso che ci sia un po 'di affari divertenti in vostra logica affettare. Se [2:] restituisce qualsiasi carattere, [: 2] devono restituire 2 caratteri. Si prega di fornire la vostra linea di ingresso.

Risposta ovvia: Invece di vostra prima linea, fare:

line[0:3] + [line[3][:2], line[3][2:]]

che funziona supponendo che line[0:3] è una lista. In caso contrario, potrebbe essere necessario apportare alcune piccole modifiche.

Questa funzione

def merge(seq):
    merged = []
    for s in seq:
        for x in s:
            merged.append(x)
    return merged 

fonte: http://www.testingreflections.com/node/view/4930

def is_iterable(i):
    return hasattr(i,'__iter__')

def iterative_flatten(List):
    for item in List:
        if is_iterable(item):
            for sub_item in iterative_flatten(item):
                yield sub_item
        else:
            yield item

def flatten_iterable(to_flatten):
    return tuple(iterative_flatten(to_flatten))

questo dovrebbe funzionare per qualsiasi livello di nidificazione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top