创建列表时出现报错,Python如何筛选提取列表中的非字符串元素
设计一个Python脚本,开头先自定义一个同时包含整数、浮点数、字符串的列表,将该起始列表放在脚本的靠前位置。脚本的输出应为一个新列表,仅包含原列表中的非字符串元素。
错误原因
Python原生列表不支持使用减号-直接删除单个元素,list1 - k的写法不符合语法要求,因此触发类型错误。同时你没有提前初始化list2,如果原列表没有字符串元素,代码运行到最后打印list2时也会触发未定义变量的报错。
修正后代码
推荐用更简洁的列表推导式实现筛选逻辑,完整代码如下:
print("本脚本从给定的初始列表中筛选所有非字符串类型元素输出") print() # 初始列表放在脚本靠前位置 list1 = [21,99,-99,"cool","school","pool",41.34,-9.034] print("输入的初始列表为:", list1) # 筛选非字符串元素 list2 = [item for item in list1 if type(item) != str] print("输出的结果列表为:", list2)
运行结果
本脚本从给定的初始列表中筛选所有非字符串类型元素输出 输入的初始列表为: [21, 99, -99, 'cool', 'school', 'pool', 41.34, -9.034] 输出的结果列表为: [21, 99, -99, 41.34, -9.034]
如果你习惯用循环写法,也可以替换筛选部分的代码:
list2 = [] for item in list1: if type(item) != str: list2.append(item)
两种写法实现效果完全一致。
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

