在编写程序中出现奇怪的现象,不知道是不是Python的BUG。
对于列表变量ls中存有如下数据
['面朝', '大海', ',', '春暖花开', '\n', ' ', ' ', ' ', ' ', ' ', ' ', '海子', '\n', '从', '明天', '起', ',', '做', '一个', '幸福', '的', '人', '\n', '喂', '马', ',', '劈柴', ',', '周游世界', '\n', '从', '明天', '起', ',', '关心', '粮食', '和', '蔬菜', '\n', '我', '有', '一所', '房', ' ', '子', ',', '面朝', '大海', ',', '春暖花开', '\n', '从', '明天', '起', ',', '和', '每', '一个', '亲人', '通信', '\n', '告诉', '他们', '我', '的', '幸福', '\n', '那', '幸福', '的', '闪电', '告诉', '我', '的', '\n', '我', '将', '告诉', '每', '一个', '人', '\n', '\n', '给', '每', '一条', '河', '每', '一座', '山取', '一个', '温暖', '的', '名字', '\n', '陌生人', ',', '我', '也', '为', '你', '祝福', '\n', '愿', '你', '有', '一个', '灿烂', '的', ' ', '前程', '\n', '愿', ' ', '你', '有情人终成眷属', '\n', '愿', '你', '在', '尘世', '获', ' ', '得', '幸福', '\n', '我', '只', '愿', '面朝', '大海', ',', '春暖花开']
需要删除其中的'\n',' ',','
使用如下代码:
zf=[","," ","\n"]
for zf1 in zf:
for j1 in j:
if zf1==j1:
j.remove(j1)
得到结果如下:
['面朝', '大海', '春暖花开', '海子', '从', '明天', '起', '做', '一个', '幸福', '的', '人', '喂', '马', '劈柴', '周游世界', '从', '明天', '起', '关心', '粮食', '和', '蔬菜', '我', '有', '一所', '房', '子', '面朝', '大海', '春暖花开', '从', '明天', '起', '和', '每', '一个', '亲人', '通信', '告诉', '他们', '我', '的', '幸福', '那', '幸福', '的', '闪电', '告诉', '我', '的', '我', '将', '告诉', '每', '一个', '人', '给', '每', '一条', '河', '每', '一座', '山取', '一个', '温暖', '的', '名字', '陌生人', '我', '也', '为', '你', '祝福', '愿', '你', '有', '一个', '灿烂', '的', ' ', '前程', '愿', ' ', '你', '有情人终成眷属', '愿', '你', '在', '尘世', '获', ' ', '得', '幸福', '\n', '我', '只', '愿', '面朝', '大海', '春暖花开']
注意到结果中有若干个空格和'\n'未被删除。
将代码更改为如下方式:
i=0
while i<len(j):
if j[i] in zf:
j.remove(j[i])
else:
i+=1
则问题得到解决。
['面朝', '大海', '春暖花开', '海子', '从', '明天', '起', '做', '一个', '幸福', '的', '人', '喂', '马', '劈柴', '周游世界', '从', '明天', '起', '关心', '粮食', '和', '蔬菜', '我', '有', '一所', '房', '子', '面朝', '大海', '春暖花开', '从', '明天', '起', '和', '每', '一个', '亲人', '通信', '告诉', '他们', '我', '的', '幸福', '那', '幸福', '的', '闪电', '告诉', '我', '的', '我', '将', '告诉', '每', '一个', '人', '给', '每', '一条', '河', '每', '一座', '山取', '一个', '温暖', '的', '名字', '陌生人', '我', '也', '为', '你', '祝福', '愿', '你', '有', '一个', '灿烂', '的', '前程', '愿', '你', '有情人终成眷属', '愿', '你', '在', '尘世', '获', '得', '幸福', '我', '只', '愿', '面朝', '大海', '春暖花开']
观察上下两段代码,应是j1 in j这个对列表的遍历时,不知何故跳过了部分空格和回车。使用下标的方式进行列表遍历时这个问题得到解决。比较奇怪,谨记于此。