2015-12-11 44 views
0

所以我試圖拿2個數字列表;切分第一個列表,反轉切片列表的排序,然後將其添加到第二個列表並打印新列表。當我運行並把所有的輸入,我只是得到一個空的列表。你們能幫我找出我出錯的地方嗎?爲什麼我會得到一個空的列表?

def transform(list1,list2,r1,r2): 
     rev_list=[] 
     list1='' 
     list2='' 
     l1=list1.split(',') 
     l2=list2.split(',') 
     slice_l1=l1[r1:r2] 
     for i in reversed(slice_l1): 
      rev_list.extend(i) 
     new_list=l2+rev_list 
     return new_list 

    def main(): 
     user_input_l1=input("Please enter a list of numbers separated by a comma (,): ") 
     user_input_l2=input("Please enter a second list of numbers separated by a comma (,): ") 
     user_input_r1=int(input("Please enter the beginning index for slice: ")) 
     user_input_r2=int(input("Please enter the ending index for slice: ")) 
     new_list=transform(user_input_l1,user_input_l2,user_input_r1,user_input_r2) 
     print("Your new list is",new_list) 
     print(type(new_list)) 

if __name__=="__main__": 
    main() 

謝謝大家提前。

+0

您沒有顯示您的輸入。嘗試找到最短的輸入並添加輸出。也請縮進最後一個代碼塊。 – Netch

回答

0

有幾件事情:

list1 = ''list2 = ''把你投入空字符串''。我相信那不是你的意圖,所以它可以被刪除?

然後,當你輸入你的數字時,它們是一個元組的形式,它沒有.split()方法。我已對這些行進行了更改,將l1l2列入表單。

此外,如果您只將一個數字添加到列表中,則使用.append()而不是.extend()。另外,如果你想使用.extend(),你會給它一個完整的列表作爲參數。

試試這個:

def transform(list1,list2,r1,r2): 
    rev_list=[] 
    l1= [item for item in list1] 
    l2= [item for item in list2] 
    slice_l1=l1[r1:r2] 
    rev_list.extend(reversed(slice_l1)) 
    new_list=l2+rev_list 
    return new_list 
+0

謝謝snookieordie的幫助。您的解決方案對我無效,但它確實給了我最終解決問題所需的想法。謝謝你的幫助 – magonzalez87

0

所以我想通了,如何實現我的目標:

def transform(list1,list2,r1,r2): 
    rev_list=[] 
    l1=list(list1) 
    l2=list(list2) 
    slice_l1=l1[r1:r2] 
    rev_list.extend(reversed(slice_l1)) 
    l2.extend(rev_list) # Extends l2 by rev_list 
    return l2 

我使用的eval()方法對我的用戶輸入,從用戶的輸入轉換成字符串到一個元組中,然後我使用該元組上的list()方法將其轉換爲列表。

再次感謝snookieordie尋求幫助。

相關問題