2017-03-10 101 views
1

我正在嘗試編寫一個函數,該函數接受例如[1,2,3]的輸入並返回[ 1,1,2,2,3,3]但我得到一個錯誤編寫一個函數,它將一個列表作爲參數,並返回一個列表,該列表重複列表中的元素

這裏是代碼我現在

def problem3(aList): 
    list1= [] 
    newList1= [] 
    for i in range (len(aList)): 
     list1.append(aList[i]) 
    for i in range (0, len(list1)): 
     newList1= aList + list1[i] 

這是錯誤

"Traceback (most recent call last): Python Shell, prompt 2, line 1 File "h:\TowlertonEvanDA7.py", line 34, in newList1= aList + list1[i] builtins.TypeError: can only concatenate list (not "int") to list"

回答

0

你不能給列表「添加」一個整數;這隻適用於兩個列表。

newList1 = aList + list1[i] 

可能是下列任何一項:然而

newList1 = aList + [list1[i]] 
newList1 = aList.append(list1[i]) 
newList1 = aList.extend([list1[i]]) 

注意的是,這些不會解決你的程序 - 他們將僅僅允許它運行。您的邏輯不會以正確的順序構建新列表。它目前會產生[1,2,3,1,2,3]。

您需要的邏輯會在您第一次觸摸時添加一個元素兩次。關鍵語句應該是這樣的:在ALIST

的項目: newList.extend([項目,項目])

0

您的循環第二應該是這樣的:

newList1.append(aList[i]) 
    newList1.append(list1[i]) 

甚至:

newList1.append(aList[i]) 
    newList1.append(alist[i]) 

因此不需要list1。

1

你可以這樣來做:

def problem3(aList): 
    newList1= [] 
    for i in aList: 
     newList1.extend((i, i)) 
    return newList1 

lst = [1,2,3] 
print problem3(lst) 

# [1, 1, 2, 2, 3, 3] 
0

首先,你不能用一個元素相結合的列表。其次,第一個for循環不是必需的。

你可以這樣說:

def problem3New(aList): 
     buffer = aList 
     newList = [] 
     for a,b in zip(aList, buffer): 
      newList.append(a) 
      newList.append(b) 
     return newList 
0

基於關你得到它看起來像你的混合類型(如你想添加與列表整數錯誤)。

如第二for循環代碼的注意,你必須:

newList1= aList + list1[i] 

這是說:

Set newList1 to list1 plus whichever element we're looking at now

你可能尋找到替代追加兩您正在查看的當前元素爲newList1

爲了什麼可能是這樣做的最直接的方式(無需修改代碼太多):

for i in range(0, len(list1)): 
    # append current element twice to the end of our new list 
    newList1.append(list1[i]) 
    newList1.append(list1[i]) 

確保也return newList1你的函數結束(或者你不會看到你的來自任何你稱爲problem3)。

你絕對可以簡化此代碼然而

def problem3(aList): 
    newList1 = [] 

    # iterate over list by its elements 
    for x in aList: 
     newList1.append(x) 
     newList1.append(x) 

    return newList 

有許多不同的方式(大部分是更好),但是你可以寫這個解決方案出來。

相關問題