Как удалить все строки из списка Python кортежей

6
задан jpp 16 January 2019 в 14:21
поделиться

5 ответов

Поскольку достаточно извлечь первый элемент каждого кортежа, вы можете распаковать его и воспользоваться списком. Для списка кортежей:

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]
0
ответ дан jpp 16 January 2019 в 14:21
поделиться

Используйте понимание вложенного кортежа и isinstance:

output = [tuple(j for j in i if not isinstance(j, str)) for i in ListTuples]

Вывод:

[(100,), (80,), (20,), (40,), (40,)]

Обратите внимание, что в кортежах есть запятые, чтобы отличать их от, например, (100), который идентичен 100.

0
ответ дан CristiFati 16 January 2019 в 14:21
поделиться

Вот еще одно решение с использованием 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,)]
0
ответ дан RoadRunner 16 January 2019 в 14:21
поделиться

Попробуйте это

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]

0
ответ дан Henrique Zanferrari 16 January 2019 в 14:21
поделиться

Мы проверяем, является ли конкретное значение строкой или нет, используя type(value).

output = [tuple([j for j in i if type(j)!=str]) for i in ListTuples]
print(output)
    [(100,), (80,), (20,), (40,), (40,)]
0
ответ дан cph_sto 16 January 2019 в 14:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: