Вам не следует беспокоиться о различиях между целыми и длинными. Если вы когда-нибудь попытаетесь напечатать длинный, 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
длинных, так что вы знаете, что работаете с длинными вместо целых.
Чтобы вытащить их из кортежей, вы можете сделать:
>>> 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 будет содержать список long.