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


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

    正确的如下:

    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

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

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

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

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

    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
    ['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:

     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
    ['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并没起作用,交换顺序也没区别,具体原因是什么暂时不清楚。

  • 相关阅读:
    [ES6]react中使用es6语法
    [前端自动化]grunt的简单使用
    [react-native]react-native填坑笔记
    [CSS布局]简单的CSS三列布局
    简单说下cookie,LocalStorage与SessionStorage.md
    [算法学习]开始leetcode之旅
    monorepo和multrepo的简介
    异步请求(ajax,http) 之 逐渐完善的大全
    Java中Synchronized的用法
    Node.js小白开路(一)-- fs篇
  • 原文地址:https://www.cnblogs.com/nlp-yekai/p/3760094.html
Copyright © 2020-2023  润新知