2017-09-09 16 views
0

特定のインデックスより前の位置にリストに要素を挿入するプログラムを作成しています。たとえば、リストに要素を挿入する

mylist = [1,2,3,4,5] 

enter the index = 3 
enter the item = 7 

出力:入力インデックスが3である

[1,2,3,7,4,5] 

ので、Pythonは位置に新しいアイテムを追加しますインデックス-1である私はのようなものを試してみました。2.

が、

mylist = [1,2,3,4,5] 

indexInput = int(input("Enter the index: ")) 
itemInput = int(input("Enter the item: ")) 

for i in mylist: 
    new_slot = indexInput -1 
    new_length = len(mylist) + 1 
    if i == new_slot: 
     mylist[i] = item 
     mylist.append(mylist[i]) 
print(mylist) 

私はpythonのinsert()関数について知っていますが、私は知っていますそれを使用することはできませんので、私はそれを長い道でコードしなければなりませんでした。どんな助けでも大歓迎です。

答えて

2

あなただけのリストのスライスを使用することができます。

mylist = [1,2,3,4,5] 

indexInput = int(input("Enter the index: ")) 
itemInput = int(input("Enter the item: ")) 

if indexInput<0: 
    indexInput = len(mylist)+indexInput+1 

mylist = mylist[:indexInput] + [itemInput] + mylist[indexInput:] 
print(mylist) 
# for index 3 and item 7 => [1, 2, 3, 7, 4, 5] 
# for index -2 and item 6 => [1, 2, 3, 4, 6, 5] 

は説明:

list[start:end:step] => list items from index [start] to index [end-1] with a step of 1 
if start is not given, 0 is assumed, if end is not given, it goes all the way to the end of the list, if step is not given, it assumes a step of 1 
In my code I wrote: 
mylist = mylist[:indexInput] + [itemInput] + mylist[indexInput:] 
for indexInput=3 and itemInput=7 
mylist = mylist[:3] + [7] + mylist[3:] 
mylist[:3] => mylist from 0 (start not given), to 3-1, step of 1 (step not given) 
list1 + list2 => a list that contains elements from list1 and list2 
mylist[:3] + [7] => [...elements of mylist[:3]..., 7] 
mylist[3:] => mylist from 3, to len(mylist)-1 (end not given), step of 1 (step not given) 

あなたはそれを長い道のりをしたい場合は、ここソリューションです:ここで

mylist = [1,2,3,4,5] 

indexInput = int(input("Enter the index: ")) 
itemInput = int(input("Enter the item: ")) 
if indexInput<0: 
     indexInput = len(mylist)+indexInput+1 
leftSide = [] 
rightSide = [] 
for i in range(len(mylist)): 
    if i<indexInput: 
    leftSide.append(mylist[i]) 
    elif i>indexInput: 
    rightSide.append(mylist[i]) 
    else: 
    leftSide.append(itemInput) 
    leftSide.append(mylist[i]) 

mylist = leftSide + rightSide 
print(mylist) 
# for index 3 and item 7 => [1, 2, 3, 7, 4, 5] 
# for index -2 and item 6 => [1, 2, 3, 4, 6, 5] 
+0

説明のための束に感謝します。しかし、私のインデックスが負のインデックスである場合、コードは機能しません。 – Maxxx

+0

@Maxxxはこの場合の絶対値を得るために 'abs()'関数を使います。私の更新された私の答えをチェックしてください。 –

+0

申し訳ありませんが、負のインデックスを使用する場合は、list [-2] = item – Maxxx

0

です私のコード

mylist = [1, 2, 3, 4, 5] 

indexInput = int(input("Enter the index: ")) 
itemInput = int(input("Enter the item: ")) 

for idx, val in enumerate(mylist): 
    if idx == indexInput: 
     mylist = mylist[:idx] + [itemInput] + mylist[idx:] 

print(mylist) 

が、これはあなたがinsertを使用することを許可されていない割り当てのためである場合、これは、あなたが探しているものはおそらくあるだけmylistインデックス

+0

@Mr Geekの答えは私よりも優れています – zhongjiajie

0
を取得するために enumerate機能を使用し
list = [1,2,3,4,5] 
inputIndex = 3 
inputItem = 7 
temp = 0 

for i in range(len(list)):#continuously swap your elements until you reach the end 
    if(i == len(list) - 1): # if you're at the end, swap and add the temp to the end 
     temp = list[i] 
     list[i] = inputItem 
     list.append(temp) 
    elif(i >= inputIndex): 
     temp = list[i] 
     list[i] = inputItem 
     inputItem = temp 

print(list) 

、それはあなたを助けることを願ってあなたはおそらくスライスを使用することを許可されていないと仮定しています。

関連する問題