【问题标题】:How to use any() to apply to a particular nested list only?如何使用 any() 仅适用于特定的嵌套列表?
【发布时间】:2021-03-26 21:36:22
【问题描述】:

我正在尝试对点的移动进行编码,但我不希望点超过。除非前面有另一个点,否则每个点的速度都会增加(直到达到最大值)。

数组 a 是由每个点嵌套/划分的点之间相对于彼此的一系列距离。数组 b 是一组速度(最初从静止开始)。

如果速度 + 1 + 嵌套距离中的任何值 = 0,那么我不希望速度增加。但是,当我应用 any 函数时,它似乎适用于整个数组,而不是我想要的特定嵌套列表:

import numpy as np
a = [[-1, -3], [1, -2], [3, 2]] #relative distances of each point
b = np.zeros(3) #velocities
for count, i in enumerate(a):
    if b[count] + 1 + any(a[count]) == 0:
        b[count] == b[count]
    else:
        b[count] += 1
print(b)

输出是[1。 1. 1.],但我想要 [0.,1.,1.]。我应用错了吗?如果您需要任何进一步的说明,请告诉我

【问题讨论】:

  • any(data) == 0 并不意味着“数据中的任何项目是否等于零”它的意思是“是在data 上调用any 的结果等于零”
  • 我想你想要any(x == 0 for x in i)
  • any(a[count]) 在 count 为 0 时返回 True,然后在进行加法 + 时返回 True 值为 1。所以 0 + 1 + 1 != 0 .... 也许这是你的问题?您能否详细说明您对这里的期望?

标签: python arraylist


【解决方案1】:

是的,你用错了。您想知道您引用的任何总和是否等于零——因此您必须将any 应用于表达式。您将它应用于a 行,它只是询问该行的任何元素是否是“真实的”。

if any( (b[count] + 1 + a_component) == 0
        for a_component in a[count]):

为什么在子句中有非功能性赋值?否定你的逻辑:

if not ... :
    b[count] += 1

...并且没有else 子句

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 2016-01-24
    • 2021-06-27
    • 1970-01-01
    相关资源
    最近更新 更多