列表操作错误和追加

时间:2017-02-07 05:13:18

标签: python

我是一名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] 但它说[' cat',62]

任何人都可以向我解释一下吗? 我们将不胜感激。

4 个答案:

答案 0 :(得分:3)

嗯,range(5)中的数字是多少? 0,1,2,3,4,对吧?

哪些是奇怪的? (即k % 2非零,因此" truthy")1和3,对吧?

因此,您首先使用第1项" cat",然后将其从原始列表中删除并将其添加到新列表中。原始列表现在是:

[12, 3.4, "dog", 62]

现在你取第3项,第62项,并将其从原始列表中删除,然后将其添加到新列表中。

我们添加了" cat"和62到新的列表,它开始是空的。因此新列表是

["cat", 62]

原始列表是:

[12, 3,4, "dog"]

答案 1 :(得分:1)

列表在Python中为零索引。所以my_list[0] == 12my_list[1] == 'cat'

循环for k in range(5):步骤,以便k获取值01234 (结尾是独占的,因此k永远不会是5

if k % 2:表示“只要k模2为非零”,这相当于“当k为奇数时”。 k得到的第一个奇数值是1my_list[1]"cat",因此首先会附加到new_list

list.pop从列表中删除并返回一个元素。这意味着,处理k == 1后,"cat"不再在列表中。之后my_list将为[12, 3.4, "dog", 62]

下一个奇数是3my_list[3]现在是62。如果"cat"尚未删除,则会"dog"。之后my_list将为[12, 3.4, "dog"]

现在是关键部分:k的最后一个值是4。幸运的是,4是偶数,因此未输入if。如果是,则会出现错误,因为my_list只剩下3个元素,并且您无法关闭第5个元素(索引4)。

答案 2 :(得分:0)

如果if k % 2:是奇数,则

Truek

k=0不会进入if

k=1进入if并弹出 - >> cat

现在列表是

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

 new_list=["cat"]

k=2它不会进入if

k=3进入时,如果并弹出62

所以new_list = ["cat","62"]

答案 3 :(得分: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]