2017-02-12 6 views
1

intをリストの範囲に追加するにはどうすればよいですか?スライスでリスト要素を追加するには?

たとえば、インデックスを(a,b)の間に追加する必要がある場合、なぜ私のコードは機能しませんか?

k = 7 
a = 0 
b = 2 
List = [1,2,3,4,5,6] 
List[a:b+1] += k 

「int」オブジェクトは反復可能ではありません。

私の予想される出力は[8,9,10,4,5,6]です。

+0

付加は、 'numpy'アレイではなく、リストの作品。リストの要素を1つずつ置き換える必要があります。 – hpaulj

+0

'+'サインオンリストは、指定された引数でリストを拡張しようとします。これは 'iterable'でなければなりません。あなたのカスでは、 'k'(' 7')はそうではないので、あなたがエラーを起こすのです。 '[1,2] + [3、4]'を試してください。 – math2001

答えて

4

forループを使用してリストを反復処理する必要があります。

for i in range(a, b+1): 
    List[i] += k 
0

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

new_list = List[0:a] + map(lambda x : x + k, List[a:b+1]) + List[b+1:] 

出力:複数の要素を含む

>>> new_list 
[8, 9, 10, 4, 5, 6] 
+0

これは正しくありません。まず、 '.index'は線形演算であるため、非常に非効率的です。したがって、区間の長さは2次となります。次に、 '.index'はリストの**最初の**インスタンスのインデックスを返します。これはあなたのロジックを破ります。 –

+0

たとえば、a、b、およびkに同じ値を持つ '[1,2,3,1,1,1,1]'で試してください。 –

+0

今はどうですか? @ juanpa.arrivillaga – Jarvis

関連する問題