Python遍历列表的一个奇怪现象

在编写程序中出现奇怪的现象,不知道是不是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这个对列表的遍历时,不知何故跳过了部分空格和回车。使用下标的方式进行列表遍历时这个问题得到解决。比较奇怪,谨记于此。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值