2013-05-09 101 views
0

我試着去創建一個函數,它接受一個列表,並指定每個字符串在列表中,即使你不知道有多少字符串列表中的一個變量循環函數來定義變量

下面是一些我嘗試:

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]的話,我希望它循環並分配到a11ExampleList[2]等即時通訊

的輸出IM試圖讓:

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

我知道這個心不是做正確的方式,但我嘗試以顯示你們什麼,我試圖做

如果有人知道如何正確地做到這一點,請幫助!

+2

首先,你不應該使用'list'作爲變量名稱 - 它在python中命名一個類型:-) – 2013-05-09 22:13:25

+1

你可以添加你期望得到的結果作爲輸出的問題嗎? – 2013-05-09 22:14:05

+0

是的,你是正確的這只是一個例子 – Serial 2013-05-09 22:14:20

回答

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' 
+0

我想它根本沒用,但謝謝你回答我的問題! – Serial 2013-05-09 22:22:49

2

這夠好嗎?

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

print vars['a111'] 

如果你真的想要,然後你可以做

globals().update(vars) 
1

爲輸出IM試圖讓:

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和很多重複所有在這個網站(一)爲什麼你真不(b)如果你必須這樣做,(c)即使你認爲你必須這樣做,你爲什麼不想這麼做。

+0

不,我只是說在程序運行後,我可以使用這些變量來代表列表字符串 – Serial 2013-05-09 22:22:05

+0

,現在每個人都在說它的一個愚蠢的問題它的罰款我是一個初學者我沒有,知道我知道了 – Serial 2013-05-09 22:23:47