码迷,mamicode.com
首页 > 编程语言 > 详细

python中判断语句用两个or连接的奇葩

时间:2014-05-30 20:02:41      阅读:399      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

学python的时候犯的一个错误,放在这吧。就是在循环某个列表的时候不要去操作它,这是容易忽略的一个地方。所以如果要操作某个列表本身,那么先把该列表copy一份,然后再读取的时候读copy的那份。操作原来的列表。

正确的如下:

bubuko.com,布布扣
import re

a="hen/zg /zg qd/a /a ,/x /x hen/zg /zg xh/v /v "
b=re.split([ ], a)
b_copy=b[:]
print b
cixing=["/x","/zg","/uj","/ul","/e","/d"]
for seg in b_copy:
    for k in cixing:
        if k in seg:
            b.remove(seg)
print b
bubuko.com,布布扣

 

 

分割线...........................................................................................................

首先来看问题,在做完词性标注后,我要将部分词性的词去掉,如代码中,列表cixing所示:if的判断语句不能只用 k in seg,因为,这种情况不能去除k==seg的情况。所以需要两个判断语句

即:if k==seg or k in seg:

好的,问题来了,请看测试结果

bubuko.com,布布扣
import re

a="hen/zg /zg qd/a /a ,/x /x hen/zg /zg xh/v /v "
b=re.split([ ], a)
print b
cixing=["/x","/zg","/uj","/ul","/e","/d"]
for seg in b:
    for k in cixing:
        if k==seg or k in seg:
            b.remove(seg)
print b
bubuko.com,布布扣
[hen/zg, /zg, qd/a, /a, ,/x, /x, hen/zg, /zg, xh/v, /v, ‘‘]
[/zg, qd/a, /a, /x, /zg, xh/v, /v, ‘‘]
[Finished in 0.0s]

 

看另一种,我把判断语句写成K==seg,不加后面的k in seg:

bubuko.com,布布扣
 1 import re
 2 
 3 a="hen/zg /zg qd/a /a ,/x /x hen/zg /zg xh/v /v "
 4 b=re.split([ ], a)
 5 print b
 6 cixing=["/x","/zg","/uj","/ul","/e","/d"]
 7 for seg in b:
 8     for k in cixing:
 9         if k==seg:
10             b.remove(seg)
11 print b
bubuko.com,布布扣
[hen/zg, /zg, qd/a, /a, ,/x, /x, hen/zg, /zg, xh/v, /v, ‘‘]
[hen/zg, qd/a, /a, ,/x, hen/zg, xh/v, /v, ‘‘]
[Finished in 0.0s]

显然,在用or连接两个判断语句的时候,k==seg并没起作用,交换顺序也没区别,具体原因是什么暂时不清楚。

 

python中判断语句用两个or连接的奇葩,布布扣,bubuko.com

python中判断语句用两个or连接的奇葩

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/nlp-yekai/p/3760094.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!