2010-03-12 10 views
2

J'ai une liste contenant un tuples et entiers longs la liste ressemble à ceci:Python: containg tuples et Lits long int

table = [(1L,), (1L,), (1L,), (2L,), (2L,), (2L,), (3L,), (3L,)] 

Comment convertir la table pour ressembler à une liste officielle?

de sorte que la sortie serait:

table = ['1','1','1','2','2','2','3','3'] 

A titre d'information les données ont été obtenues à partir d'une base de données MySQL.

Répondre

8
>>> table = [(1L,), (1L,), (1L,), (2L,), (2L,), (2L,), (3L,), (3L,)] 
>>> [int(e[0]) for e in table] 
[1, 1, 1, 2, 2, 2, 3, 3] 

>>> [str(e[0]) for e in table] 
['1', '1', '1', '2', '2', '2', '3', '3'] 
+0

Merci beaucoup :) – Yasmin

+2

Vous voulez probablement aussi savoir comment Emil l'a fait;) C'est une jolie fonctionnalité python appelée liste compréhensions: http://docs.python.org/tutorial/datastructures.html#list- les compréhensions – c089

2

Avec itertools

import itertools 

>>> x=[(1L,), (1L,), (1L,), (2L,), (2L,), (2L,), (3L,), (3L,)] 
>>> 
>>> list(itertools.chain(*x)) 
[1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L] 
>>> 
>>> map(str,itertools.chain(*x)) 
['1', '1', '1', '2', '2', '2', '3', '3'] 
1

Vous ne devriez pas vous soucier des différences entre ints et désire ardemment. Si vous essayez d'imprimer longtemps, le L disparaîtra.

nums = [1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L] 
>>> for num in nums: 
...  print num, 
1 1 1 2 2 2 3 3 

En outre, pourquoi souhaitez-vous que votre liste de résultats comporte des chaînes? Vous devriez les garder en chiffres jusqu'au moment où vous voulez les imprimer. Ensuite, vous pouvez les convertir en chaînes en utilisant la mise en forme de chaîne (qui est plus souple aussi. Surtout si vous commencez à traiter avec virgule flottante ou des nombres décimaux.

>>> print "Your number is: %d" % 1L 
Your number is 1 
>>> print "If we're talking money, you might want $%.2f" % 2L 
If we're talking money, you might want $2.00 

Tout fonctionne comme prévu. Le L ne montre que . dans le repr de long, vous savez que vous travaillez avec languit au lieu de ints

Pour les faire sortir de leurs tuples, vous pouvez faire:

>>> nums = [(1L,), (1L,), (2L,), (3L,)] 
>>> nums = [x[0] for x in nums] 

qui copie votre liste à un nouvelle liste, ou vous pouvez faire:

>>> for i, num in enumerate(nums): 
...  nums[i] = num 

>>> for i in xrange(nums): 
...  nums[i] = int(nums[i]) 

Qui va modifier votre liste d'origine plutôt que d'en créer une nouvelle. Dans les deux cas, nums contiendra une liste de longs.