if语句在做什么?
>>> list = ['a', 'b', 'c', 'd', 'e', 'f']
>>> for i in xrange(len(list)):
... if i / 2:
... del(list[0])
这将导致['e','f']
我不知道if是在做什么。
答案 0 :(得分:1)
你基本上说:
删除列表的第一个元素(
del(list[0])
),而i
除以2
大于零(i/2
)
由于在前两个周期中它不正确,所以你留下最后两个元素。因为0/2
和1/2
返回0
,因为它们是整数。
答案 1 :(得分:0)
Python将i/2
解释为布尔表达式:如果它等于0
,则表达式被认为是false,否则它被认为是真的。让我们逐行查看代码:
lst = ['a', 'b', 'c', 'd', 'e', 'f']
我们创建一个包含这6个元素的列表
for i in xrange(len(list)):
len(list)
是列表的长度,即6,xrange(n)
允许您迭代从0
到n-1
的整数(在每个循环中i
将是0
,1
,...,6
)
if i / 2:
我们检查i
2
之间的整数除法是真还是假。请注意:0
相当于False
,其他内容相当于True
。
当i
为0
或1
时,商i/2
为0,因此不会执行下一个语句。在其他4个案例中(i
为2
,3
,4
,5
),i/2
大于0
。因此我们执行声明。
del(lst[0])
这只是要求删除列表的第一个元素,我们已经看到这将完成4次,因此结果是一个列表,其中只剩下最后两个元素。
该过程可视化如下(请记住/
是Python中的欧几里德分区):
BEGIN OF LOOP
i=0, lst=['a', 'b', 'c', 'd', 'e', 'f']
i/2 = 0/2 = 0 --> False --> Nothing happens
i=1, lst=['a', 'b', 'c', 'd', 'e', 'f']
i/2 = 1/2 = 0 --> False --> Nothing happens
i=2, lst=['a', 'b', 'c', 'd', 'e', 'f']
i/2 = 2/2 = 1 --> True --> Remove first element ('a')
i=3, lst=['b', 'c', 'd', 'e', 'f']
i/2 = 3/2 = 1 --> True --> Remove first element ('b')
i=4, lst=['c', 'd', 'e', 'f']
i/2 = 4/2 = 2 --> True --> Remove first element ('c')
i=5, lst=['d', 'e', 'f']
i/2 = 5/2 = 2 --> True --> Remove first element ('d')
END OF LOOP
lst=['e', 'f']
答案 2 :(得分:0)
如果'i'等于或大于2,则删除列表的第一个元素。 0等于false,1或更多等于true。
答案 3 :(得分:0)
像这样更新您的代码,以了解每次迭代您的列表会发生什么。
list = ['a', 'b', 'c', 'd', 'e', 'f']
for i in xrange(len(list)):
print (i)
print list
if (i / 2):
del(list[0])
print list
对于i=0
或i=1
进行第1次,第2次迭代,然后语句if i/2:
评估为zero
,即False
因此if
语句下的代码确实如此不执行。
对于从i=2
到i=5
的进一步迭代,然后语句if i/2:
评估为某些value
,即考虑True
因此if
语句下的代码执行并删除list
的第一个元素。
希望这有帮助。
答案 4 :(得分:-1)
if语句在索引大于或等于2时删除列表中的元素。
当i / 2不为0时, if i/2:
将评估为true,即index> = 2.