如何测试多个变量是否等于单个值?

842

我想编写一个函数,将多个变量与整数进行比较,并输出三个字母的字符串。我想知道是否有办法将其转换为Python代码。例如:

x = 0
y = 1
z = 3
mylist = []

if x or y or z == 0:
    mylist.append("c")
if x or y or z == 1:
    mylist.append("d")
if x or y or z == 2:
    mylist.append("e")
if x or y or z == 3: 
    mylist.append("f")

将返回一个列表:

["c", "d", "f"]

8
在元组中使用1 - user9011445
7
如果你想以任何/所有的方式评估一系列语句,可以使用any/all函数。 例如: all([1, 2, 3, 4, False]) 将返回 False all([True, 1, 2, 3]) 将返回 True any([False, 0, 0, False]) 将返回 False any([False, 0, True, False]) 将返回 True - eddd
11
这个问题是一个非常流行的重复目标,但我认为它不适合这个目的。大多数人尝试像 if x == 0 or 1: 这样做,当然类似于 if x or y == 0:,但对新手来说可能仍然有点困惑。考虑到 "为什么我的 'x == 0 or 1' 不起作用?" 这类问题的数量之多,我更愿意使用 这个问题 作为我们的标准重复目标。 - Aran-Fey
2
在与 00.0False 等“假值”进行比较时要特别小心。你很容易写出错误的代码,从而得到“正确”的答案。 - smci
显示剩余3条评论
31个回答

-1
#selection
: a=np.array([0,1,3])                                                                                                                                                 

#options
: np.diag(['c','d','e','f']) 
array([['c', '', '', ''],
       ['', 'd', '', ''],
       ['', '', 'e', ''],
       ['', '', '', 'f']], dtype='<U1')

现在我们可以使用a作为[row,col]选择器,它的作用就像任何(...)条件一样:
#list of options[sel,sel]
: np.diag(['c','d','e','f'])[a,a]                                                                                                                                     

 array(['c', 'd', 'f'], dtype='<U1')

我认为这个问题并不是在询问关于numpy的内容。 - OneCricketeer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接