鱼C论坛

 找回密码
 立即注册
查看: 2598|回复: 2

[已解决]关于 and or 还是不懂

[复制链接]
发表于 2020-12-10 15:35:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 17623095765 于 2020-12-10 16:18 编辑

  1. jia=['a','b','c']
  2. yi=['x','y','z']
  3. xin=[]

  4. for qqq in jia:
  5.    for www in yi:
  6.        if (qqq!='a' or www!='x'):
  7.                 xin.append([qqq,www])

  8. print(xin)
复制代码

输出结果是
  1. [['a', 'y'], ['a', 'z'], ['b', 'x'], ['b', 'y'], ['b', 'z'], ['c', 'x'], ['c', 'y'], ['c', 'z']]
复制代码


按我的理解 应该是 先看左边  发出所有不等于‘a’的
  1. [['b', 'x'], ['b', 'y'], ['b', 'z'], ['c', 'x'], ['c', 'y'], ['c', 'z']]
复制代码


然后看如果是www等于a  那么看右边的  发出所有等于a 和 不等于x的
  1. [['a', 'y'], ['a', 'z']]
复制代码



条件1 or 条件2
(条件1是真的所有值) 加上 (条件是假的情况下,条件2的是真的值)

而不是(条件1、条件2,二选一)

如果条件1、条件2都是假的,那么会执行吗

最佳答案
2020-12-10 15:49:49
本帖最后由 heidern0612 于 2020-12-10 16:07 编辑

1、or的情况是两者满足一即可。

为何输出为[['a', 'y'], ['a', 'z'], ['b', 'x'], ['b', 'y'], ['b', 'z'], ['c', 'x'], ['c', 'y'], ['c', 'z']],是因为:

在二维for循环的时候,是以一维循环的单个元素来依次循环二维数组的(同理多维数组都是以上一维度数组单个元素依次向上循环)。

所以过程应该是:

在a的情况下,循环x,y,z;在b的情况下循环x,y,z;在c的情况下循环x,y,z。

下面的就好解释了:

因为只要不同时满足即等于a又等于x的情况,就会按照:

ax(不满足不输出),ay,az,bx,by,bz,cx,cy,cy的顺序输出。

也就是说,你虽然前面条件不满足,但是你后面条件满足也是可以的,但是同时满足就不行了



2、同假的情况下,输出还是假.

一真一假输出为真,总体就是上面说的,只要满足一个即可。

同真的话,只输出第一个,既常说的短路逻辑。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-10 15:49:49 | 显示全部楼层    本楼为最佳答案   
本帖最后由 heidern0612 于 2020-12-10 16:07 编辑

1、or的情况是两者满足一即可。

为何输出为[['a', 'y'], ['a', 'z'], ['b', 'x'], ['b', 'y'], ['b', 'z'], ['c', 'x'], ['c', 'y'], ['c', 'z']],是因为:

在二维for循环的时候,是以一维循环的单个元素来依次循环二维数组的(同理多维数组都是以上一维度数组单个元素依次向上循环)。

所以过程应该是:

在a的情况下,循环x,y,z;在b的情况下循环x,y,z;在c的情况下循环x,y,z。

下面的就好解释了:

因为只要不同时满足即等于a又等于x的情况,就会按照:

ax(不满足不输出),ay,az,bx,by,bz,cx,cy,cy的顺序输出。

也就是说,你虽然前面条件不满足,但是你后面条件满足也是可以的,但是同时满足就不行了



2、同假的情况下,输出还是假.

一真一假输出为真,总体就是上面说的,只要满足一个即可。

同真的话,只输出第一个,既常说的短路逻辑。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-10 16:00:42 | 显示全部楼层

  1. jia=['a','b','c']
  2. yi=['x','y','z']
  3. xin=[]

  4. for qqq in jia:#外面的for循环意思就是‘a’带动一次yi的for循环,之后‘b’带动一次再‘c’带动一次
  5. #每一次yi都要执行for循环,所以循环下来是('a''x' 'a' 'y''a''z' )('b' 'x' 'b' 'y' 'b' 'z')('c' 'x'’c''y''c''z')
  6.    for www in yi:
  7.        if (qqq!='a' or www!='x'):#or的意思只要其中一个符合题意就是真而a带动的第一次yi中的(‘a’‘x’)都不符合题意所以不会被添加
  8.        #之后即使qqq==‘a’另一个www!=‘x’反之一样
  9.                 xin.append([qqq,www])

  10. print(xin)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-30 14:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表