2017-10-13 11 views
1

Im essayant de convertir ma très longue liste d'entier ia tableau binaire (liste) Im en utilisant struct.pack() et il fonctionne bien, mais je pense que cela est très laid:struct Python avec une grande liste

buf = pack(">IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII", *data) 

Je dois faire ceci parce que ma liste a 113 articles avec de grandes et petites valeurs. Est-il possible d'utiliser pack() avec une longue liste sans avoir 113 "I"?

Répondre

4

Si vous multipliez une chaîne par un entier, la chaîne est répétée plusieurs fois. Par exemple:

>>> 'foo'*3 
'foofoofoo' 

Vous pouvez donc utiliser:

buf = pack(">" + "I"*len(data), *data) 

Ceci est plus élégant et sûr ainsi: au cas où le nombre de changements d'objets, cela permet de garder tout simplement travailler.