首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reduce数组以及如果比较不适用于或时的原因

Reduce数组以及如果比较不适用于或时的原因
EN

Stack Overflow用户
提问于 2017-09-19 11:30:43
回答 1查看 35关注 0票数 0

我创建了一个读取VPN输出的程序,它返回未加密的加密映射,但我在以下方面有顾虑:

(1)可以减少这个数组:

代码语言:javascript
复制
h.write(all_vpns[n-5]+all_vpns[n-4]+all_vpns[n-3]+all_vpns[n-2]+all_vpns[n-1]+all_vpns[n]+all_vpns[n+1]+"\n\n")

类似这样的东西

代码语言:javascript
复制
all_vpns[n-5]:all_vpns[n+1] or all_vpns[n-5]-all_vpns[n+1]

(2)有一个我用来从文件中删除所有行的函数,当if语句中只有一个规则时,它工作得很好,但当我添加2时,它不起作用:

代码语言:javascript
复制
with open(in_filename) as infile, open("clean_vpn.txt", "w") as outfile:
    for line in infile.readlines():
        if line!='\n':
            outfile.write(line)

如果在If中添加另一个参数,则不起作用

代码语言:javascript
复制
   if line!='\n' or line!='      \n':

有没有人知道为什么or不起作用,但正如我前面提到的,如果我只有一个参数,那么它对那个语句很有效,但不能同时使用or。

EN

回答 1

Stack Overflow用户

发布于 2017-09-19 12:02:12

(1)你可以这样写得更少:

代码语言:javascript
复制
h.write(''.join(all_vpns[n-5:n+2])+'\n\n')

(2) if line!='\n' or line!=' \n'中的if将始终计算为True。因为or。让我们检查一下line的一些值

  • 如果line\n,则第一个条件失败,但第二个条件成功。
  • 如果line' \n',则第一个条件成功。
  • 如果line为其他值,则两个条件都成功。

所以,如果你放置or,它就像没有任何条件。我认为你应该使用and而不是or

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46291327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档