Поскольку достаточно извлечь первый элемент каждого кортежа, вы можете распаковать его и воспользоваться списком. Для списка кортежей:
res = [(value,) for value, _ in ListTuples] # [(100,), (80,), (20,), (40,), (40,)]
Если вам нужен только список целых чисел:
res = [value for value, _ in ListTuples] # [100, 80, 20, 40, 40]
Для функциональной альтернативы последнему вы можете использовать operator.itemgetter
:
from operator import itemgetter
res = list(map(itemgetter(0), ListTuples)) # [100, 80, 20, 40, 40]
Используйте понимание вложенного кортежа и isinstance
:
output = [tuple(j for j in i if not isinstance(j, str)) for i in ListTuples]
Вывод:
[(100,), (80,), (20,), (40,), (40,)]
Обратите внимание, что в кортежах есть запятые, чтобы отличать их от, например, (100)
, который идентичен 100
.
Вот еще одно решение с использованием filter()
:
def non_string(x):
return not isinstance(x, str)
print([tuple(filter(non_string, x)) for x in ListTuples])
# [(100,), (80,), (20,), (40,), (40,)]
Попробуйте это
ListTuples = [(100, 'AAA'), (80, 'BBB'), (20, 'CCC'), (40, 'DDD'), (40, 'EEE')]
ListInt = []
ListStr = []
for item in ListTuples:
strAux = ''
intAux = ''
for i in range(0, len(item)):
if(isinstance(item[i], str)):
strAux+=item[i]
else:
intAux+=str(item[i])
ListStr.append(strAux)
ListInt.append(intAux)
print(ListStr)
'''TO CONVERT THE STR LIST TO AN INT LIST'''
output= list(map(int, ListInt))
print(output)
Выход будет [100, 80, 20, 40, 40]
Мы проверяем, является ли конкретное значение строкой или нет, используя type(value)
.
output = [tuple([j for j in i if type(j)!=str]) for i in ListTuples]
print(output)
[(100,), (80,), (20,), (40,), (40,)]