Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python列表附加问题_Python_List_Append - Fatal编程技术网

Python列表附加问题

Python列表附加问题,python,list,append,Python,List,Append,我今天在添加python列表时遇到了一个相当奇怪的问题。我试图创建一个数组,它的每个元素都像一个Cstruct。其中一个元素是一个列表本身。这是有问题的代码: class players: name='placeholder' squad=list() teams=list() teams.append(players()) teams.append(players()) teams[0].name="abc" teams[1].name="xyz" teams[0].squa

我今天在添加python列表时遇到了一个相当奇怪的问题。我试图创建一个数组,它的每个元素都像一个C
struct
。其中一个元素是一个列表本身。这是有问题的代码:

class players:
    name='placeholder'
    squad=list()

teams=list()
teams.append(players())
teams.append(players())
teams[0].name="abc"
teams[1].name="xyz"
teams[0].squad.append("Joe")

for w in teams:
    print(w.name)
    print(w.squad)
我期望的结果是:

abc
['Joe']
xyz
[]
因为我只为团队[0]的
团队添加了一名成员。但我得到的结果是:

abc
['Joe']
xyz
['Joe']
名称设置得很好,但是
.append
将其附加到
团队的两个元素中


是什么导致了这一点?我该如何解决这一点?

原因是在您的类定义中,
是类变量,而不是实例变量。当一个新的
玩家
对象被初始化时,它实际上在该玩家的所有实例中共享相同的
变量。相反,您希望为
player
类定义一个
\uuuuu init\uuu
方法,该方法显式地分隔实例特定的变量

class players:
    def __init__(self):
        self.name = 'placeholder'
        self.squad = []

然后,当您初始化新的
player
对象时,它有自己的
band
变量。剩下的代码现在应该可以正常工作了,只添加了正确对象的

有些人说JavaScript很奇怪