Python-附加到名称由字符串给定的数组

Python-附加到名称由字符串给定的数组,python,arrays,python-3.x,pygame,Python,Arrays,Python 3.x,Pygame,我创建了乘法数组,并希望向其追加一些内容,但用户应该选择要将其追加到的数组 为了澄清我的意思:(下面的代码是错误的,但我不知道如何编写它。) 编辑: @吉姆·法萨拉基斯·希利亚德 我正在尝试用PyGame编程。 因此,我必须初始化我想要使用的所有图像 为了不扩展它,我想创建一个函数,您可以轻松地将其附加到您想要的任何数组中,这样我就不必每次初始化新图片时都创建一个新函数 我的代码看起来像自动取款机 def loadImages(self,pName,pAnz,pScaleX,pScaleY):

我创建了乘法数组,并希望向其追加一些内容,但用户应该选择要将其追加到的数组

为了澄清我的意思:(下面的代码是错误的,但我不知道如何编写它。)

编辑:

@吉姆·法萨拉基斯·希利亚德

我正在尝试用PyGame编程。 因此,我必须初始化我想要使用的所有图像

为了不扩展它,我想创建一个函数,您可以轻松地将其附加到您想要的任何数组中,这样我就不必每次初始化新图片时都创建一个新函数

我的代码看起来像自动取款机

def loadImages(self,pName,pAnz,pScaleX,pScaleY):
    for i in range(0,pAnz):
        tux = pygame.transform.scale(pygame.image.load('./images/%s.png'),(pScaleX,pScaleY) % pName)
        self.%s.append(tux) %pName
    length_array = len(self.%s) %pName
    return length_array

您可以使用
globals
,将变量名字符串传递给函数:

def test(pName):
    globals()[pName].append(1) 

test('y')

当然,这取决于全局作用域中存在的名称。

您可以使用
globals
,将变量名称字符串传递给函数:

def test(pName):
    globals()[pName].append(1) 

test('y')

当然,这取决于全局作用域中存在的名称。

如果您只想将对象保存到不同的“名称空间”,可以使用字典:

lists = {
   "x": [],
   "y": []
}

def test(pName):
    lists[pName].append(1)

test("y")

比使用globals或similar IMHO更干净、更容易理解。

如果您只想将对象保存到不同的“名称空间”,可以使用字典:

lists = {
   "x": [],
   "y": []
}

def test(pName):
    lists[pName].append(1)

test("y")

比使用globals或similar IMHO更干净、更容易理解。

您可以将数组放入字典中。假设有固定数量的数组,代码将如下所示:

arrays = {}
arrays['x'] = []
arrays['y'] = []

def test(pName):
    arrays[pName].append(1)

test('y')
arrays={}
def test(pName):
    if pName not in arrays.keys():
       arrays[pName]=[]
    arrays[pName].append(1)

test('y')
您需要检查用户输入,因为不是字典中键的pName将引发键异常。如果希望阵列是动态的,可以执行以下操作:

arrays = {}
arrays['x'] = []
arrays['y'] = []

def test(pName):
    arrays[pName].append(1)

test('y')
arrays={}
def test(pName):
    if pName not in arrays.keys():
       arrays[pName]=[]
    arrays[pName].append(1)

test('y')

你可以把数组放在字典里。假设有固定数量的数组,代码将如下所示:

arrays = {}
arrays['x'] = []
arrays['y'] = []

def test(pName):
    arrays[pName].append(1)

test('y')
arrays={}
def test(pName):
    if pName not in arrays.keys():
       arrays[pName]=[]
    arrays[pName].append(1)

test('y')
您需要检查用户输入,因为不是字典中键的pName将引发键异常。如果希望阵列是动态的,可以执行以下操作:

arrays = {}
arrays['x'] = []
arrays['y'] = []

def test(pName):
    arrays[pName].append(1)

test('y')
arrays={}
def test(pName):
    if pName not in arrays.keys():
       arrays[pName]=[]
    arrays[pName].append(1)

test('y')


嗯,为什么不使用字典呢?对我来说,将所有内容保存到数组中是很重要的,因为我必须将图片或对象保存到数组中。@freedome97可以将所有内容存储在字典中,也可以存储在数组中;)danielfranca的观点是,你应该有一本包含你的x和y列表的字典。但请注意,dicts和list都可以包含对象,这就是字典的字面含义
z={'x':[1,2,3,4],'y':[1,2,3,4]}
然后
z['x']
要访问x的数组,为什么不使用字典?对我来说,将所有内容保存到数组中很重要,因为我必须将图片或对象保存到数组中。@freedome97您可以将可以存储在数组中的所有内容存储到字典中;)danielfranca的观点是,你应该有一本包含你的x和y列表的字典。但请注意,dicts和list都可以包含对象,这就是字典的字面含义
z={'x':[1,2,3,4],'y':[1,2,3,4]}
然后
z['x']
访问x的数组。可能
locals()
就足够了吗?如果我在类中使用它,它也可以工作吗?因为self.globals()可能会导致错误。globals()是内置的。不需要自我;)globals()包含所有globalsYou can do@MatthiasBurger,但您需要本地作用域中的list对象及其名称。我不认为这样更好(可能遗漏了一些东西:-)是的,如果他在类中需要它,他可能需要全局变量,你是对的,可能
locals()
就足够了吗?如果我在类中使用它,它也可以工作吗?因为self.globals()可能会导致错误。globals()是内置的。不需要自我;)globals()包含所有globalsYou can do@MatthiasBurger,但您需要本地作用域中的list对象及其名称。我不认为这样会更好(可能会遗漏一些东西,尽管:-)是的,如果他在课堂上需要它,他可能需要全局的,你是对的,不要使用try/除此之外,如果你知道问题可能是什么的话
如果pName不在数组中:…
则创建键值对。在
if
之外附加
1
。它更干净了。@MatthiasBurger我不明白为什么在这个例子中,
try-except
块不好。它通常用于控制流,在本例中,预期用户将输入一个已经存在的密钥,如果他/她没有输入,则视为正常情况下的例外。由于我们不需要获取每个字符串并将其与
pName
进行比较,因此在正常情况下它也会更快(尽管在异常情况下会更慢)。我还想说,
try-except
if
一样干净,因为它显示了在有钥匙的情况下该怎么做,没有钥匙的情况下该怎么做。@TedKleinBergman我从来没有说过,try-except在这里不好。除非知道可能的异常,否则使用try是不好的做法。有些情况下,当开发人员不输入异常类型时,他们会以神奇宝贝风格捕获它们(因为try/except非常简单)。也许我不得不写“imho”之类的东西,而我可能是30%认为if/else比try/except更好的人之一。SOTA是在你不能用if处理的情况下使用try-catch。正如您所写:
如果有键,在中该怎么办;如果没有键,该怎么办
->
if
最常见的定义是:您应该使用if/else来处理您期望的所有情况。您应该使用try,除非您怀疑可能/将要出错,并且不希望它导致整个系统崩溃,例如网络超时/文件系统访问问题、文件不存在,等等——字典里没有钥匙,是你需要的东西expect@MatthiasBurger我明白你的意思,我同意除了Python以外的其他编程语言。它是