在一个类的列表的所有元素中添加数字?

时间:2015-07-08 16:34:05

标签: python python-2.7

所以我有一个带有列表的类,我想在该列表的所有元素中添加一个数字,但不是为该类中的每个列表添加一个数字。我试过这个:

class class_name:
    def __init__(self,list_name,other_list):
        self.list_name = list_name
        self.other_list = other_list

list1 = [1.0,2.0,3.0,4.0]
list2 = [4.0,5.0,6.0,7.0]    

data = [0]*len(list1)    

for i,(l1,l2) in enumerate(zip(list1,list2)):
    data[i] = class_name(l1,l2)

[(x + 5.0).list_name  for x in data]

它给了我错误:

TypeError: unsupported operand type(s) for +: 'instance' and 'float'

编辑:人们似乎不明白我想要什么。在我的实际代码中,列表已被添加到我正在使用的类(在本例中为数据)中,但是需要校准类中的一个列表(特别是指大小)。我这样做是通过在该列表中的每个元素上添加一个数字来校准它。必须对连接到其所在班级的列表进行此操作,因此我无法在将列表放入课程之前对其进行编辑。

我已经在我的代码中更早地创建了这个类,我需要它以前的方式,以便我可以使用所有元素。现在,在代码的后面,我想在类中校准这个量级列表。有没有办法做到这一点?

也许这种尝试更好地说明了我尝试做的事情:

[x.list_name for x in data] = [x.list_name+5  for x in data]

这也不起作用,我收到了这个错误:

SyntaxError: can't assign to list comprehension

我觉得这让人们了解我的需要。

4 个答案:

答案 0 :(得分:0)

如果要增加存储为对列表的两个列表中的一个,这应该有效:

[x.list_name+5.0 for x in class_names]

x不是数字,它是class_name对象。您想要从x(x.list_name)中检索要增加的内容,然后添加5.0。

答案 1 :(得分:0)

查看python的Map函数。

https://docs.python.org/2/tutorial/datastructures.html#functional-programming-tools

class class_name:
    def __init__(self,list_name,other_list):
        self.list_name = list_name
        self.other_list = other_list

list1 = [1.0,2.0,3.0,4.0]
list2 = [4.0,5.0,6.0,7.0]

def add_five(x): return x+5
list1 = map(add_five, list1)
#or instead you can use a lambda
list1 = map(lambda x: x+5 , list1)
编辑:也许试试这个。

for class_name in class_names:
    class_name.list_name = map(lambda x: x+5 , class_name.list_name)

答案 2 :(得分:0)

您首先将值添加到实例,然后访问该属性。

class class_name:
    def __init__(self,list_name,other_list):
        self.list_name = list_name
        self.other_list = other_list

list1 = [1.0,2.0,3.0,4.0]
list2 = [4.0,5.0,6.0,7.0]    

class_names = [0]*len(list1)    

for i,(l1,l2) in enumerate(zip(list1,list2)):
    class_names[i] = class_name(l1,l2)

print [x.list_name+5.0 for x in class_names]

答案 3 :(得分:0)

我不确定你的意思,但我创造了一个简单的例子:

class class_name(object):
    def __init__(self,list_name,other_list):
        self.list_name = list_name
        self.other_list = other_list

        self.list1 = []
        self.list2 = []

        self.list1.append(self.list_name)
        self.list2.append(self.other_list)

        print "My List1: ", self.list1
        print "My List2: ", self.list2

def input_data():
    list_one = raw_input("Data for list 1: ")
    list_two = raw_input("Data for list 2: ")

    class_name(list_one, list_two)

if __name__ == '__main__':
    input_data()

这就是你想要的吗?