Python: содержит контуры кортежей и long int

У меня есть список, содержащий кортежи и длинные целые числа. Список выглядит следующим образом:

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

Как преобразовать таблицу в формальный список?

поэтому выход будет:

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

Для информационных целей данные были получены из базы данных mysql.

 >>> 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'] 

С помощью 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'] 

Вы не должны беспокоиться о различиях между ints и longs. Если вы когда-нибудь попытаетесь напечатать длинный, L исчезнет.

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

Кроме того, почему вы хотите, чтобы в вашем списке результатов были строки? Вы должны держать их как цифры до тех пор, пока вы не захотите их распечатать. Затем вы можете преобразовать их в строки с использованием форматирования строк (что также более гибко. Особенно если вы начнете заниматься числами с плавающей запятой или десятичными числами.

 >>> 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 

Все будет работать так, как вы ожидаете. L только появляется в repr длинного, так что вы знаете, что работаете с longs вместо ints.

Чтобы вывести их из кортежей, вы можете:

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

Копирование списка в новый список или вы можете сделать:

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

Что изменит ваш первоначальный список, а не создаст новый. В обоих случаях nums будет содержать список длин.