【问题标题】:Type Error '>=' not supported between instances of 'list' and 'int''list' 和 'int' 的实例之间不支持类型错误 '>='
【发布时间】:2021-12-29 19:49:41
【问题描述】:

我收到以下代码的类型错误:

import random


def f(x):
    return x**2


def Sample(npts):
    sample = []

# Generate random numbers from 0 to 10.
randomlist = []
for _ in range(npts):  # just counting from 0 to npts-1
    r = random.random() # random.random() generates numbers from 0 to 1, including 0.2 etc.
    r *= 10  # convert to 0 to 10 range
    assert r >= 0 and r <= 10, "random number r should be in [0, 10]"  # verify that r is in [0, 10]
    randomlist.append(r)  # save to a list

# Save result of function f
for v in randomlist: # get each item in the list
    y = f(v)
    sample.append(y)

return sample


# start
npts = 100
result = Sample(npts)
print(f'result length: {len(result)}')
print(f'result: {result}')

我认为这是因为我试图在 int 和 list 之间进行检查。我了解到您可以使用 numpy 按预期计算它,但是,我不太明白,所以如果有人可以向我解释,我将非常感激。

【问题讨论】:

  • 我收到SyntaxError: 'return' outside function。请正确格式化您的代码。
  • 抱歉,粘贴到这里后忘记缩进了

标签: python arrays function loops math


【解决方案1】:

鉴于提供的代码示例,我实际上无法重新创建您的初始 TypeError。话虽如此,您的代码可以简化很多 - 不需要assert 的值r,或相对乘法。这个怎么样:

import random

def compute_sample(npts):
    return [ random.uniform(0.0, 10.0)**2 for _ in range(npts) ]

# start
result = compute_sample(100)
print(f'result length: {len(result)}')
print(f'result: {result}')

【讨论】:

  • 对不起,我想你误会了,我没有缩进。 for _ in range 和 for v in randomlist 都是 def Sample 的一部分
  • 在这种情况下,请使用精确的缩进编辑您的原始帖子,以便我们重新创建错误。另外,请同时提供编译器错误信息。即便如此,目前代码中只有 1 个地方对 &gt;= 进行了求值,那就是将 r 与一个数字进行比较。
猜你喜欢
  • 1970-01-01
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-11
  • 2020-02-12
  • 2022-07-03
相关资源
最近更新 更多