2010-03-05 7 views
1

J'ai une liste dont je veux prendre une tranche, inverser cette tranche et ajouter chacun de ces éléments à la fin d'une autre liste. Ce qui suit sont les options auxquelles j'ai pensé (bien que si vous en avez d'autres s'il vous plaît partager), lequel d'entre eux est le plus pythonique?Quelle est la manière la plus pythonique d'étendre une liste avec l'inversion d'une autre?

# Option 1 
tmp = color[-bits:] 
tmp.reverse() 
my_list.extend(tmp) 

# Option 2 
my_list.extend(list(reversed(color[-bits:]))) 

# Option 3 
my_list.extend((color[-bits:])[::-1]) 

Répondre

3

J'aime

my_list.extend(reversed(color[-bits:])) 

Il explique ce que vous faites (l'extension d'une liste par inversion de la tranche d'une autre liste) et est courte aussi.

et une solution itertools obligatoire

my_list.extend(itertools.islice(reversed(color), 0, bits)) 
+0

C'était ce que je pensais, il est presque auto-documenté. –

0
my_list.extend(color[:-(bits + 1):-1]) 
0

Pour Option # 2, vous pouvez découper l'appel à list. Vous pouvez également utiliser += au lieu de extend, comme ceci:

my_list += reversed(color[-bits:])