鱼C论坛

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

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

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

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

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

x
本帖最后由 17623095765 于 2020-12-10 16:18 编辑
jia=['a','b','c']
yi=['x','y','z']
xin=[]

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

print(xin)
输出结果是
[['a', 'y'], ['a', 'z'], ['b', 'x'], ['b', 'y'], ['b', 'z'], ['c', 'x'], ['c', 'y'], ['c', 'z']]

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

然后看如果是www等于a  那么看右边的  发出所有等于a 和 不等于x的
[['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、同假的情况下,输出还是假.

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

同真的话,只输出第一个,既常说的短路逻辑。
想知道小甲鱼最近在做啥?请访问 -> 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、同假的情况下,输出还是假.

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

同真的话,只输出第一个,既常说的短路逻辑。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-10 16:00:42 | 显示全部楼层
jia=['a','b','c']
yi=['x','y','z']
xin=[]

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

print(xin)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 02:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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