我是一名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]
任何人都可以向我解释一下吗? 我们将不胜感激。
答案 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] == 12
,my_list[1] == 'cat'
等
循环for k in range(5):
步骤,以便k
获取值0
,1
,2
,3
,4
(结尾是独占的,因此k
永远不会是5
。
if k % 2:
表示“只要k
模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)。
答案 2 :(得分:0)
if k % 2:
是奇数,则 True
为k
。
当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]