如何使用if语句在for循环中获取真值
how to get truth value in for loop with if statement
我无法获得嵌套在 for loop
中的条件 if statement
的正确值。这是一个用代码编写的示例,
# Input data
d11 = np.matrix([[3,6,1],[6,8,1],[1,1,1],[5,8,9]])
qp1 = np.matrix([[1],[3],[5]])
h1 = np.matrix([[5],[40],[100],[5]])
我需要 d11 matrix
的行,其与 qp1 相乘的值小于 h1 中的相应值,即 d11[i] * qp < h[i]. 代码是,
for x in range(len(d11)):
if d11[x] * qp1 < h1[x]:
a = d11[x]
else:
a = []
当我们将 d11 和 qp1 相乘时,我们得到的值为 [26,35 , 9 ,22]
。因此,如果我们与 h1 进行比较,我们发现条件为 True 第二行,即 35< 40
和第三行,即 9 < 100
。所以答案是 [[6,8,1],[1,1,1]]
。但我无法得到 answer.Please 建议我正确方式..
您的 if
语句正在检查由列表理解创建的列表
[aa[i] > 10 for i in range(len(a))]
(即列表 [False, False, False, False]
)是否为空。
因为它不为空,所以 if
语句被评估为 True
。
相反,请考虑使用 any
:
aa = [1, 4, 5, 6]
if any(num > 10 for num in aa):
c = aa[i],'t' # as (correctly) pointed out in the comments below,
# i is not defined here since we are no longer using an index
# to iterate over the list's elements.
# You'll need to decide what you want to do in case an element
# IS larger than 10.
else:
c = 0
您的代码还有另一个错误:当列表理解完成时,i
将始终是最后一个索引。
您的条件相当于:
if len([aa[i] > 10 for i in range(len(a))]):
即。您正在检查列表是否为空。它是非空的 - 它由四个 False
s.
组成
Comprehensions 列表的评估方式与您想象的不同。您正在检查列表是否不为空以及 return 列表的最后一个元素。
你想要的是这样的:
aa = [1,4,5,6,101]
c = [elem for elem in aa if elem >10]
如果c不为空,就知道10以上的元素已经在列表中了。
我无法获得嵌套在 for loop
中的条件 if statement
的正确值。这是一个用代码编写的示例,
# Input data
d11 = np.matrix([[3,6,1],[6,8,1],[1,1,1],[5,8,9]])
qp1 = np.matrix([[1],[3],[5]])
h1 = np.matrix([[5],[40],[100],[5]])
我需要 d11 matrix
的行,其与 qp1 相乘的值小于 h1 中的相应值,即 d11[i] * qp < h[i]. 代码是,
for x in range(len(d11)):
if d11[x] * qp1 < h1[x]:
a = d11[x]
else:
a = []
当我们将 d11 和 qp1 相乘时,我们得到的值为 [26,35 , 9 ,22]
。因此,如果我们与 h1 进行比较,我们发现条件为 True 第二行,即 35< 40
和第三行,即 9 < 100
。所以答案是 [[6,8,1],[1,1,1]]
。但我无法得到 answer.Please 建议我正确方式..
您的 if
语句正在检查由列表理解创建的列表[aa[i] > 10 for i in range(len(a))]
(即列表 [False, False, False, False]
)是否为空。
因为它不为空,所以 if
语句被评估为 True
。
相反,请考虑使用 any
:
aa = [1, 4, 5, 6]
if any(num > 10 for num in aa):
c = aa[i],'t' # as (correctly) pointed out in the comments below,
# i is not defined here since we are no longer using an index
# to iterate over the list's elements.
# You'll need to decide what you want to do in case an element
# IS larger than 10.
else:
c = 0
您的代码还有另一个错误:当列表理解完成时,i
将始终是最后一个索引。
您的条件相当于:
if len([aa[i] > 10 for i in range(len(a))]):
即。您正在检查列表是否为空。它是非空的 - 它由四个 False
s.
Comprehensions 列表的评估方式与您想象的不同。您正在检查列表是否不为空以及 return 列表的最后一个元素。
你想要的是这样的:
aa = [1,4,5,6,101]
c = [elem for elem in aa if elem >10]
如果c不为空,就知道10以上的元素已经在列表中了。