2016-12-07 15 views
0
lst=[5,6,7,8,9] 
v=10 
for item in lst: 
     if item<v: 
      lst.insert(0,v) 
print(lst) 

私はイムは10毎回挿入要素のPython

を挿入するtryningないので、それは次のようになります、リスト内のすべての要素が10の下にある場合、インデックス0で、10を挿入したいです:[ 10,5,6,7,8,9]

+1

リストの反復処理中にリストを変更しないでください。これはうまくいきます: 'lst = [item

+0

@StevenRumbalski私はワンライナーを望みません – Charan

+0

希望するアイテムのリストに追加することで、ループの前に追加してください。そして、あなたのループの後で 'lst = prepend_items + lst'という代入をするか、元のオブジェクト' lst [0:0] = prepend_items'を実際に変更する必要があるかどうかを調べます。 –

答えて

0

vより小さい元の値の数に基づいて元のリストの先頭に同じ値のvを挿入しています。この場合、挿入順の保全は妥当ではありません。

挿入されたすべての値は同じで、変更されない元のリストの前に付加されます。さらに明確に基づいて更新答え

、なぜこの

lst = [5, 6, 7, 8, 9] 
v = 10 
count = 0 
for item in lst: 
    if item < v: 
     count += 1 
new_lst = [v] * count + lst 
print(new_lst) 

結果

>>> [10, 10, 10, 10, 10, 5, 6, 7, 8, 9]


編集何かを使用しません

場合、私はイムは10たび

lst = [5, 6, 7, 8, 9] 
v = 10 
for item in lst[:]: 
    if item < v: 
    lst.insert(0, v) 
    break 
print(lst) 

結果

>>> [10, 5, 6, 7, 8, 9]

を挿入するtryningない、 リスト内のすべての
の要素が10の下にあるインデックス0で、10を挿入したいです

vより小さい場合は、インデックス0vが挿入されます。 item < vの条件が満たされると、残りの項目をチェックせずにforループが終了します。そうでない場合、値のいずれもvより小さい場合は、変更を加えずにリスト全体を走査します。

このコードでは、lstアイテムのすべてが1回だけシフトするため、ここでは挿入メソッドを使用しています。

+0

私は1回だけ10を含めるだけです – Charan

+0

あなたが本当に後にしているのは、リスト内の要素のうちの* any *が 'v'の下にある場合です。現在のところ、あなたのサンプルコードは、 'v'より小さい項目を見つけ出すたびに10 *を挿入したいことを意味しています。 – trendsetter37

+0

リストのすべての要素が10未満の場合はインデックス10に10を挿入したい、毎回10を挿入しない場合 – Charan

関連する問題