为了账号安全,请及时绑定邮箱和手机立即绑定

如何从元组列表中删除所有字符串python

如何从元组列表中删除所有字符串python

翻过高山走不出你 2021-10-12 16:08:23
我正在尝试从元组列表中删除所有字符串ListTuples = [(100, 'AAA'), (80, 'BBB'), (20, 'CCC'), (40, 'DDD'), (40, 'EEE')]我已经开始尝试寻找解决方案:output = [i for i in ListTuples if i[0] == str]print(output)但我似乎无法理解如何获得如下输出:[(100), (80), (20), (40), (40)]格式始终为 ( int, str)。
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

使用嵌套元组理解和isinstance

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

输出:

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

请注意,元组中有尾随逗号以将它们与例如(100)相同的100.


查看完整回答
反对 回复 2021-10-12
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

由于提取每个元组的第一项就足够了,您可以解包并使用列表理解。对于元组列表:


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]


查看完整回答
反对 回复 2021-10-12
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

尝试这个


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]


查看完整回答
反对 回复 2021-10-12
  • 3 回答
  • 0 关注
  • 236 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号