python html5 bootstrap 视频教程

德云社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5907|回复: 0

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

[复制链接]

185

主题

204

帖子

1175

积分

工程师

Rank: 5Rank: 5

金钱
759
金币
15
威望
0
贡献
0
发表于 2016-4-5 00:35:20 | 显示全部楼层 |阅读模式
AI人工智能 语音助理 人工翻译 教程
Python2.7.8 列表 list() 语句 for 循环迭代 remove() pop() len() 问题

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


操作
结果
注意事项
s = x
x 替换 si

s[i:j] = t
以可迭代 t 的内容,替换 sij的切片

del s[i:j]
等同 s[i:j] = []

s[i:j:k] = t
t 的那些元素,替换 s[i:j:k] 切片元素
(1)
del s[i:j:k]
从列表移除 s[i:j:k] 切片元素

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

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

迭代清除 remove() 问题
  1. a = list(range(10))
  2. a
  3. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  4. for b in a:
  5.     a.remove(b)

  6. a
  7. [1, 3, 5, 7, 9]
复制代码

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

迭代清除 pop() 问题

  1. a = list(range(10))
  2. a
  3. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  4. for b in list(range(len(a))):
  5.     a.pop(b)

  6. Traceback (most recent call last):
  7.   Python Shell, prompt 11, line 2
  8. IndexError: pop index out of range
  9. a
  10. [1, 3, 5, 7, 9]
复制代码

以上代码书写形式,无法完全清除列表内容,最后剩余 [1, 3, 5, 7, 9],且还会出现 IndexError: pop index out of range;原因在于每次移除项时,列表长度发生了变化,相应项也随之移位

迭代清除正确形式

  1. a = list(range(10))
  2. a
  3. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  4. for b in list(range(len(a))):
  5.     a.pop()

  6. a
  7. []
复制代码

以上代码书写形式,可完全清除列表内容,最后剩余 [];原因在于移除项时,列表长度虽发生了变化,但每次只弹出 -1 索引项 (即:最后项),所以,不受列表长度变化,相应项移位影响。



请关注 "德云社区" 及其微信公众号,了解相关资讯


版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。


AI人工智能 语音助理 人工翻译 教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|Sitemap|小黑屋|德云社区 |网站地图  

GMT+8, 2024-4-26 23:30 , Processed in 0.033018 second(s), 27 queries .

工业和信息化部: 粤ICP备14079481号-2

技术支持 乐数软件     版权所有 © 2014-2021 德云社区    

快速回复 返回顶部 返回列表