() takes 1 positional argument but 2 were given"Python 中的 Lambda 表达式-6ren"> () takes 1 positional argument but 2 were given"Python 中的 Lambda 表达式-我编写了一个简单的 lambda 函数来生成一个随机的 bool 值列表,代码如下: randBinList = lambda n: [random()>> randBinList(100) [Fal-6ren">
gpt4 book ai didi

python-3.x - "TypeError: () takes 1 positional argument but 2 were given"Python 中的 Lambda 表达式

转载 作者:行者123 更新时间:2023-12-03 19:46:40 33 4
gpt4 key购买 nike

我编写了一个简单的 lambda 函数来生成一个随机的 bool 值列表,代码如下:

randBinList = lambda n: [random()<0.5 for _ in range(n)]

此功能完美运行,例如:
>>> randBinList(100)
[False, False, True, False, False, True, True, False, True, False, False, False, False, True, False, True, False, False, False, False, False, False, True, False, True, True, True, False, False, True, True, False, False, False, False, True, False, True, False, True, False, False, True, False, False, False, True, False, True, False, False, False, False, True, True, True, True, False, True, True, True, True, False, True, True, True, True, False, False, True, True, False, True, False, True, False, True, True, False, False, False, False, True, True, False, False, False, False, True, False, False, True, True, True, False, True, False, True, False, False]

但是,当我尝试将此函数添加到我正在处理的新类时,收到以下错误:
return self.randBinList(num_of_features)
TypeError: <lambda>() takes 1 positional argument but 2 were given

我不知道为什么它说给出了两个参数?这是我类(class)的代码。谢谢你的帮助。
import sys, csv, os, subprocess, time
from collections import deque, defaultdict
import random
from typing import List
class ScriptFeatures():
randBinList = lambda n: [random()<0.5 for _ in range(n)]

def get_random_individual (self):
num_of_features = len(self.d)
return self.randBinList(100)

最佳答案

此示例重现了您的错误。

import numpy as np

class A(object):
rand_bin_list = lambda n: [np.random.random() < 0.5 for _ in range(n)]

def __init__(self):
print(self.rand_bin_list(5))

这里的问题是,当你在一个类中构造一个函数,并以 self. 为前缀调用它时。您需要将 self 作为第一个参数。所以你可以添加 self作为参数,或者您可以在 __init__ 中定义函数.所以要么
class A(object):
rand_bin_list = lambda self, n: [np.random.random() < 0.5 for _ in range(n)]

def __init__(self):
print(self.rand_bin_list(5))

或者
class A(object):

def __init__(self):
self.rand_bin_list = lambda n: [np.random.random() < 0.5 for _ in range(n)]
print(self.rand_bin_list(5))

关于python-3.x - "TypeError: <lambda>() takes 1 positional argument but 2 were given"Python 中的 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51970680/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com