Python 发表于 2016-4-5 00:35:20

Python2.7.8 列表 list() 语句 for 循环迭代 remove() pop() len() 问题

Python2.7.8 列表 list() 语句 for 循环迭代 remove() pop() len() 问题

列表、bytearray (字节数组) 对象,支持允许原-位修改对象的额外操作。 其它易变序列类型 (当被添加到语言时) 也应支持这些操作。 字符串、元组是不可变序列类型:这种对象一旦被创建,就不可再修改。 以下定义操作,适于易变序列类型 (其中 x 为任意对象)。

操作结果注意事项
s = x以 x 替换 s 第 i 项

s = t以可迭代 t 的内容,替换 s 从 i 到 j的切片

del s等同 s = []

s = t以 t 的那些元素,替换 s 切片元素(1)
del s从列表移除 s 切片元素

s.append(x)等同 s =(2)
s.extend(x)等同 s =x(3)
s.count(x)返回 s == x 的 i 数量

s.index(x[, i[, j]])返回如 s == x 且 i <= k <j 的最小 k值(4)
s.insert(i, x)等同 s = (5)
s.pop()等同 x = s; del s;return x(6)
s.remove(x)等同 del s(4)
s.reverse()原位反向 s 项(7)
s.sort(]])原位排序 s 项(7)(8)(9)(10)

迭代清除 remove() 问题
a = list(range(10))
a

for b in a:
    a.remove(b)

a
以上代码书写形式,无法完全清除列表内容,最后剩余 ;原因在于每次移除项时,列表长度发生了变化,相应项也随之移位。

迭代清除 pop() 问题
a = list(range(10))
a

for b in list(range(len(a))):
    a.pop(b)

Traceback (most recent call last):
Python Shell, prompt 11, line 2
IndexError: pop index out of range
a
以上代码书写形式,无法完全清除列表内容,最后剩余 ,且还会出现 IndexError: pop index out of range;原因在于每次移除项时,列表长度发生了变化,相应项也随之移位。

迭代清除正确形式a = list(range(10))
a

for b in list(range(len(a))):
    a.pop()

a
[]以上代码书写形式,可完全清除列表内容,最后剩余 [];原因在于移除项时,列表长度虽发生了变化,但每次只弹出 -1 索引项 (即:最后项),所以,不受列表长度变化,相应项移位影响。
http://forum.digitser.cn/data/attachment/forum/201605/19/132155fevczeyds5e5y1wy.jpg
请关注 "德云社区" 及其微信公众号,了解相关资讯
版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。
页: [1]
查看完整版本: Python2.7.8 列表 list() 语句 for 循环迭代 remove() pop() len() 问题