我试图创建一个获取列表的函数,并将列表中的每个字符串分配给变量,即使您不知道列表中有多少字符串
这是我尝试的东西:
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]
等等
我知道这不是正确的方法,但我试图告诉你们我想做什么
如果有人知道如何正确地做到这一点请帮助!
答案 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))
如果您的意思是尝试创建名为a1
,a11
等的变量,请参阅Creating dynamically named variables from user input以及此网站上的许多重复项(a)为什么你真的不想这样做,(b)如果必须怎么做,以及(c)为什么你真的不想这样做,即使你认为你必须这样做。