2017-03-10 5 views
1

例えば[1、2、3]のような入力を受け取り、[ 1、1、2、2、3、3]が、私はここでエラーリスト内の要素を複製するLISTを引数として取る関数を書く

を得ていることは、私が持っているコードは、今

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

です整数をリストに「追加」する。これは2つのリストに対してのみ機能します。

newList1 = aList + list1[i] 

は、次のいずれかが考えられます。これらは、あなたのプログラムを修正しないことが

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

注意、 - 彼らは単にそれを実行することができます。ロジックが適切な順序で新しいリストを作成しません。現在、[1,2,3,1,2,3]が生成されます。

に触れるとすぐに、要素を2回追加するロジックが必要です。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

まず、あなたは、要素とリストを組み合わせることはできません。 第2に、最初のforループは必要ありません。

あなたはこのようにそれを行うことができます。

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

は、あなたがあなたのタイプを(つまり、あなたがリストで整数を追加にしようとしている混合しているように見える取得しているエラーをオフに基づいて、 )。

forループ、あなたのコードの2で述べたように、あなたが持っている:

言っている
newList1= aList + list1[i] 

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

あなたはおそらく代わりにはの 2を追加するために探してあなたが探している現在の要素は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 

(優れているほとんどの)多くの異なった方法は、あなたがしかし、このソリューションを書き出すことができますがあります。このコードを単純化することができます。

関連する問題