Python 在if循环中使用数组作为条件

Python 在if循环中使用数组作为条件,python,arrays,if-statement,conditional-statements,Python,Arrays,If Statement,Conditional Statements,我对python是全新的,对一般的编码也是相当陌生的,所以请耐心听我说 我正在尝试执行for循环: for numi,i in enumerate(v1): for numj,j in enumerate(v1): angle=(np.arccos(np.dot(i,j))/(np.linalg.norm(i)*np.linalg.norm(j))))*180/(np.pi) print(angle) 但我想添加一个条件,其中循环跳过任何值或匹配两个不同数组的

我对python是全新的,对一般的编码也是相当陌生的,所以请耐心听我说

我正在尝试执行for循环:

for numi,i in enumerate(v1):
   for numj,j in enumerate(v1):
       angle=(np.arccos(np.dot(i,j))/(np.linalg.norm(i)*np.linalg.norm(j))))*180/(np.pi)
       print(angle)
但我想添加一个条件,其中循环跳过任何值或匹配两个不同数组的任何元素的
I
j

ala=[i for i,x in enumerate(resname) if x=='ALA']
gly=[i for i,x in enumerate(resname) if x=='GLY']
包含

[0, 9, 14, 45, 56, 72, 87, 101, 102, 126, 145]`

我尝试使用一个使用“continue”的条件if语句,但我不知道当
I
j
==数组中的任何元素时,该语句的语法是否正确

差不多

for numi,i in enumerate(v1):
   if i==ala or i==gly:
       continue
   else:
       for numj,j in enumerate(v1):
           if j==ala or j==gly:
               continue
           else:
               angle=(np.arccos(np.dot(i,j))/(np.linalg.norm(i)*np.linalg.norm(j))))*180/(np.pi)
               print(angle)

除了实际工作的代码外,您可以使用
任何内置功能:

鉴于:

v1 = [[-2.736, -0.466, -2.248], [-3.373, -2.93, -1.288], [-0.765, -3.666, 1.123], [-1.269, 1.882, 1.073], [3.444, 1.159, -3.183], [3.339, 2.289, 0.759], [-4.057, 2.649, -0.189], [0.317, 1.196, -3.699], [0.0, 0.0, 0.0]]

请为
v1
提供一些示例输入。在
中使用
,即如果j==ala或j==gly
更改为
如果j在ala中或j在gly中
…v1的示例:
[-2.736-0.466-2.248][-3.373-2.93-1.288][-0.765-3.666-1.123][-1.269 1.882 1.073][3.444 1.159 3.339-2.759][0.317 1.196-3.699][0.0.0.]
如果j==ala或j==gly执行
if j in ala或j in gly
给我
ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()
I get“ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.全部()当使用这种方法时,我实际上在你使用的每种方法中都会遇到这种错误listed@help231_我正在更新我的答案。您没有明确说明
v1
是一个数组oops。我没有意识到这一点一定很重要。v1是一个坐标数组,我正在试图找到每个坐标与所有其他坐标之间的角度w我在数组中,过滤掉给出无效答案的特定坐标。哦,我的天啊!我只使用了
any
,而不是
not any
。我发誓我多次尝试使用any()函数,但都无法正常运行。我想是我的格式问题。非常感谢!!
v1 = [[-2.736, -0.466, -2.248], [-3.373, -2.93, -1.288], [-0.765, -3.666, 1.123], [-1.269, 1.882, 1.073], [3.444, 1.159, -3.183], [3.339, 2.289, 0.759], [-4.057, 2.649, -0.189], [0.317, 1.196, -3.699], [0.0, 0.0, 0.0]]
for numi,i in enumerate(v1):
   if any(v in ala or v in gly for v in i):
       continue
   else:
       for numj,j in enumerate(v1):
           if any(v in ala or v in gly for v in j)::
               continue
           else:
               angle=(np.arccos(np.dot(i,j))/(np.linalg.norm(i)*np.linalg.norm(j))))*180/(np.pi)
               print(angle)