Python 删除列表中特定元素的问题
本帖最后由 炸弹二锅头 于 2020-8-31 19:06 编辑data_source 数据源列表是一个嵌套列表,有一些地址,我想把省和直辖市选出来组成新的列表
temp = [:3]}" for i in data_source]# print(temp, len(temp))
keys = sorted(list(set(temp)), key=temp.index)
print(keys, len(keys))
# 由于用的前三个字符,所以“新疆”、“宁夏”要调整。
for k in keys:
if k[:2] in ["宁夏", "新疆"]:
keys.remove(k)
keys.extend(["宁夏", "新疆"])
print(keys, len(keys), "新疆巴" in keys)
输出结果:
['北京市', '江苏省', '上海市', '浙江省', '河南省', '河北省', '辽宁省', '安徽省', '湖北省', '天津市', '内蒙古', '山东省', '黑龙江', '陕西省', '山西省', '吉林省', '甘肃省', '新疆乌', '新疆巴', '宁夏银', '青海省', '新疆阿', '海南省'] 23
['北京市', '江苏省', '上海市', '浙江省', '河南省', '河北省', '辽宁省', '安徽省', '湖北省', '天津市', '内蒙古', '山东省', '黑龙江', '陕西省', '山西省', '吉林省', '甘肃省', '新疆巴', '青海省', '海南省', '宁夏', '新疆'] 22 True
小白不明白的地方在于,为什么列表中的 “新疆巴” 还在,没有被删掉? 谢谢大佬们
PS:
# 先把字典中的键,用列表的方式生成。要保留“省”、“市”所以用前三个字符切片
temp = [:3]}" for i in data_source]
# print(temp, len(temp))
keys = list(set(temp))
print(keys, len(keys))
# 由于用的前三个字符,所以“新疆”、“宁夏”要调整。
for k in keys:
if k[:2] in ['宁夏', '新疆']:
keys.remove(k)
keys.extend(["宁夏", "新疆"])
print(keys, len(keys), "新疆巴" in keys)
我把排序命令去掉之后,每次列表顺序都随机,然后我发现,结果也是随机的,有时候就可以成功剔除我想要剔除的元素,有时候会随机留下来其它元素,每次都不一样。所以我觉得我应该换一种方式删除列表中的指定元素。
可能因为在for循环中有一个remove动作,remove完了导致原来的keys变化了,所以for完就有问题 我java中还要用一个新的字符串类型来接收字符串 正在学这个,坐板凳学习 sz090955 发表于 2020-8-31 13:08
可能因为在for循环中有一个remove动作,remove完了导致原来的keys变化了,所以for完就有问题
对对对 ,我也觉得是这种可能 ,列表发生了变化,那个元素可能就被跳过去了,我不用sorted排序的时候,set()顺序随机的,我试验了几次,有时候就可以全部剔除成功,有时候剩下来的是其它元素,都不一定是“新疆巴”,但是我用sorted把顺序定下来之后,每次都会留下“新疆巴”这个元素。 2L正解,print一下k就知道了 建议新建一个list,把要的加进去,或者直接 not in 【】],大概样子 sz090955 发表于 2020-8-31 13:30
建议新建一个list,把要的加进去,或者直接 not in 【】],大概样子
好的 谢谢 debug一下应该可以知道是什么回事了 本帖最后由 陌路无人 于 2020-8-31 14:43 编辑
一行代码就够了,不用那么麻烦
keys = ['北京市', '江苏省', '上海市', '浙江省', '河南省', '河北省', '辽宁省', '安徽省', '湖北省', '天津市', '内蒙古', '山东省', '黑龙江', '陕西省', '山西省', '吉林省', '甘肃省', '新疆乌', '新疆巴', '宁夏银', '青海省', '新疆阿', '海南省']
print(keys, len(keys))
keys = not in ["宁夏", "新疆"]]
keys .extend(["宁夏", "新疆"])
print(keys , len(keys ), "新疆巴" in keys )
页:
[1]
2