2017-02-07 9 views
0

私はPythonの初心者であり、このコードの理解に問題があります。私の理解としてリスト操作エラーと追加

my_list = [12, "cat", 3.4, "dog", 62] 
new_list = [] 

for k in range(5): 

    if k % 2: 
     m = my_list.pop(k) 
     new_list.append(m) 

print(new_list) 

結果は [12,62]でなければなりません。しかし、それは[ '猫'、62]

誰も私にそれを説明することができます言いましたか? ありがとうございます。

答えて

3
ません

まあ、range(5)中の数字は何ですか? 0、1、2、3、4、

どれが奇数ですか? (つまり、k % 2は0ではないため "真実"です)1と3、そうですか?

したがって、最初にアイテム1「cat」を取り出し、元のリストから削除して新しいリストに追加します。

ここでアイテム3,62を取り出し、元のリストから削除して新しいリストに追加します。

"cat"と62を新しいリストに追加しました。これは空になりました。したがって、新しいリストは、元のリストである

["cat", 62] 

ある:

[12, 3,4, "dog"] 
+0

ありがとうございました!非常に役立つ –

0

if k % 2:は、kが奇数の場合、Trueです。それはifとpops-内部に入るときk=1それはif

の内側に入ることはありませんk=0

>猫

今リストが

list [12, 3.4, "dog", 62] 

new_list=["cat"] 

ですk=2それが内部になるときk=3場合if

の内側に行くので、62

をポップnew_list = ["cat","62"]

+0

はあなたにたくさんありがとうございました! –

1

リストは、Pythonでインデックスゼロです。だから、my_list[0] == 12my_list[1] == 'cat'など

ループfor k in range(5):手順kは値01234(エンドが排他的であるので、k5になるだろうことはありませんを取得しますように。

if k % 2:k modulo 2がゼロでないときはいつでも」という意味で、「kが奇数のとき」に相当します。kが得られる最初の奇数は1です。my_list[1]"cat"なので、最初にnew_listに追加されます。

list.popは、リストから要素を削除して返します。つまり、k == 1が処理されると、"cat"はリストに含まれなくなります。その後、my_list[12, 3.4, "dog", 62]になります。

次の奇数は3です。 my_list[3]62になりました。 "cat"が削除されていない場合は、代わりに"dog"になります。その後、my_list[12, 3.4, "dog"]になります。

最後に、kの値は4です。幸いにも、4は偶数なので、ifは入力されません。それがあった場合、my_listには3つの要素しか残らず、5番目の要素(インデックス4)をオフにすることができないため、エラーが発生します。

0

さて、一歩一歩を歩くみましょう:

my_list = [12, "cat", 3.4, "dog", 62] # (List of 5 Elements) 
new_list = [] # (Empty List) 
for k in range(5): # A For loop from 0 to 4 ## value of K goes from 0 to 4 

    if k % 2: # Checking whether k is odd 
       # Here k%2 return 0 (if k is even) or 1 (if K is odd) 
       # So, Here, if k % 2: condition works only on odd Numbers i.e. [1,3] 

     m = my_list.pop(k) # The method pop() removes and returns last object or obj from the list. 
     # this return and remove element on index k 
     # Here, when value of k is 1, return element 'cat' at index 1 in my_list 
     # and update the my_list ! now my_list is [12, 3.4, 'dog', 62] 
     # When value of k is 3, return element 62 on index 3 in updated list [12, 3.4, 'dog', 62] 
     # again update the my_list to [12, 3.4, 'dog'] 

     new_list.append(m) # Append the element in List 
          # First m contains 'cat' and then 62 
print(new_list) # Print the list which is ['cat',62]