循环函数定义变量

时间:2013-05-09 22:12:01

标签: python list function loops

我试图创建一个获取列表的函数,并将列表中的每个字符串分配给变量,即使您不知道列表中有多少字符串

这是我尝试的东西:

ExampleList = ['turtle','cow','goat','pig','swag']

def add_One(list):
    x = "a"+"1"
    y = 0
    y = y+1
    x = list[y]


while True:
    add_One(ExampleList)

所以基本上我正在使用示例列表,然后我使用a1定义ExampleList[1]然后我希望它循环并将a11分配给ExampleList[2]依此类推

输出我试图获得:

a1 = ExampleList[1]
a11 = ExampleList[2]
a111 = ExampleList[3]
a1111 = ExampleList[4]

等等

我知道这不是正确的方法,但我试图告诉你们我想做什么

如果有人知道如何正确地做到这一点请帮助!

3 个答案:

答案 0 :(得分:3)

我认为这就是你要做的。我不知道你为什么要在地球上尝试这样做,但你可以这样做:

example_list = ['turtle','cow','goat','pig','swag']
number_of_ones = 1
for item in example_list:
    globals()['a'+('1'*number_of_ones)] = item
    number_of_ones += 1

print(a11111) # prints 'swag'

如果您希望它更短,请使用enumerate

example_list = ['turtle','cow','goat','pig','swag']
for number_of_ones, item in enumerate(example_list, 1):
    globals()['a'+('1'*i)] = item

print(a11111) # prints 'swag'

答案 1 :(得分:2)

这还不错吗?

vars = {}
for i, value in enumerate(example_list, 1):
    vars['a' + '1'*i] = value

print vars['a111']

如果你真的想,那你可以做

globals().update(vars)

答案 2 :(得分:1)

  

输出我试图获得:

a1 = ExampleList[1]
a11 = ExampleList[2]
a111 = ExampleList[3]
a1111 = ExampleList[4]

如果你真的希望它作为输出,打印出来或作为字符串返回,这只是一个字符串格式化问题,除了一个扭曲:你需要跟踪一些持久状态调用。做这样的事情的最好方法是使用发电机,但如果你愿意,可以直接做。例如:

def add_One(lst, accumulated_values=[0, "a"]):
    accumulated_values[0] += 1
    accumulated_values[1] += '1'
    print('{} = ExampleList[{}]'.format(*accumulated_values))

如果您的意思是尝试创建名为a1a11等的变量,请参阅Creating dynamically named variables from user input以及此网站上的许多重复项(a)为什么你真的不想这样做,(b)如果必须怎么做,以及(c)为什么你真的不想这样做,即使你认为你必须这样做。