我有一個函數,它包含一個列表和n個數字。我想創建這樣的事情:Python - 如何根據提供的n的數量添加局部變量
def create_list_sets(lst, n):
if n == 1:
for i in range(len(lst)-1):
res = [lst[i], lst[i+1]]
return res
if n == 2:
for i in range(len(lst)-1):
res2 = [lst[i], lst[i+1], lst[i+2]]
return res2
只有我不想寫n == 2, n == 3... n == n
。更具體地講,如果我的def create_list_sets(lst, n)
需要n == 4
我要資源來eqaul [lst[i], lst[i+1], lst[i+2], lst[i+3], lst[i+4]]
,沒有硬編碼這個
下面是完整的代碼我工作:
###########
# Library #
###########
def number_to_be_tested():
number_tested = 34278698769876978697687693454
return number_tested
def number_split(object):
lst = []
string_the_number = str(object)
for digit in string_the_number:
lst.append(int(digit))
return lst
def create_list_sets(lst, n):
if n == 1:
for i in range(len(lst)-1):
res = [lst[i], lst[i+1]]
return res
if n == 2:
for i in range(len(lst)-1):
res2 = [lst[i], lst[i+1], lst[i+2]]
return res2
##################################
# Script/Application/Program #
##################################
def main():
test_number = number_to_be_tested()
test_lst = number_split(test_number)
list_sets = test_lst(test_lst, 2)
print list_sets
if __name__ == '__main__':
main()
我怎樣才能達到我的目標是什麼?也正如你所看到的,它會在程序結束時創建一個Traceback,我不關心這個atm - 那個說,如果你知道如何也能幫助我,我會非常感激。
當函數打'return',它停止。在循環內返回並不會做你認爲它的作用。 – user2357112
一個簡單的循環/理解可能起作用:'[lst [i + j] for j in range(n + 1)]'...'lst [i:i + n + 1]'我不是100%確定解決你的問題。你似乎在循環的第一次迭代之後返回,因此我不確定他們想要完成什麼。 – mgilson
@mgilson,「他們正在努力完成的事情」是我試圖完成的。我正在學習python。對於這個自我分配,我從一個數字列表開始,並試圖將它們分解成2,3,4個集合,無論n是什麼。唯一的事情是,我想用列表中的每個項目開始每個集合。這將總共創建最多28個新列表(取決於n == 1或更多)。隨着我提供的代碼我能夠做到這一點,但只有當我指定了什麼n可以。因爲我剛開始,我描述自己想要的路線的能力可能有點不清楚。 – Lefty