一、列表

1.1 列表的介绍

  列表是python的基本数据类型之一,其他编程语言也有类似的数据类型,比如JS中的数组,java中的数组等等,它是以[]括起来,每个元素用逗号隔开,而且可以存放各种数据类型,比如以下示例:

  lst = [1,'哈哈','abc',[1,8,0,"百度"],("我","叫","元组"),{"我叫":"dict字典"},{"我叫集合","集合"}]

  列表相比于字符串,不仅可以存放不同的数据类型,而且可以存放大量的数据,32位python可以存放536870912个元素,64位可以存放1152921504606846975个元素,而且列表是有序的(按照你保存的顺序),有索引,可以切片,方便取值。

1.2 列表的索引和切片

  列表和字符串一样也拥有索引,如下示例:

  lst = ["王力宏","周渝民","黄渤","黄磊","刘涛"]
  print(lst[0]) # 获取第一个元素,即结果为:王力宏
  print(lst[1])
  print(lst[2])
  lst[3] = "刘宪华" # 注意:列表是可以发生改变的,这点和字符串有区别
  print(lst) # 结果为:['王力宏', '周渝民', '黄渤', '刘宪华', '刘涛']
  # 而字符串不能通过索引改变,否则报错,如下代码
  str = '孙红雷'
  str[0] = '王' # 报错提示为 TypeError: 'str' object does not support item assignment

  注意:列表是可以发生改变的,这点和字符串不一样,字符串不能通过索引去改变值。

  列表也可以切片,同字符串的切片规则一样,切出来的内容是列表类型,具体如下示例:

  lst = ["王力宏","周渝民","黄渤","黄磊","刘涛"]
  print(lst[0:3]) # ['王力宏', '周渝民', '黄渤']
  print(lst[:2]) # ['王力宏', '周渝民']
  print(lst[1::2]) # ['周渝民', '黄磊']
  print(lst[2::-1]) # ['黄渤', '周渝民', '王力宏']
  print(lst[-1:-5:-2]) # ['刘涛', '黄渤']

二、列表的增、删、改、查

注意:列表(list)和字符串(str)是不一样的,lst可以发生改变,所以直接就在原来的对象上进行了操作。

2.1 增

列表的增加操作有:append,insert,extend,具体用法如下示例:

  lst = ['王力宏','周渝民','黄渤','黄磊']
  lst.append('孙红雷') # 在末尾追加,每次只能增加一个元素
  print(lst) # ['王力宏', '周渝民', '黄渤', '黄磊', '孙红雷']   lst.insert(1,'李晨') # 在指定index的位置插入指定元素
  print(lst) # ['王力宏', '李晨', '周渝民', '黄渤', '黄磊', '孙红雷']   lst.extend(['杨颖','邓超','陈赫']) # 迭代添加,一次可以增加多个元素
  print(lst) # ['王力宏', '李晨', '周渝民', '黄渤', '黄磊', '孙红雷', '杨颖', '邓超', '陈赫']

  注意:数字和bool值是不可以用extend添加的,因为他们不是可迭代对象。

2.2 删除

  列表的删除操作有:pop,remove, clear,del,具体用法如下示例:

  lst = ['王力宏','周渝民','黄渤','黄磊']
  print(lst.pop(0)) # 删除索引为0的元素,返回所删除的元素,结果为:王力宏
  print(lst) # 列表内容变为['周渝民','黄渤','黄磊']   lst.remove('周渝民') # 删除指定元素,返回值为None , 注意:remove删除一个不存在的元素会报错
  print(lst) # 列表内容变为['黄渤', '黄磊']   lst.clear() # 清空列表
  print(lst) # lst变为一个空列表,结果为:[]   # 切片删除
  lst = ['王力宏','周渝民','黄渤','黄磊']
  del lst[1:3] # 删除索引为1和2的元素
  print(lst) # 结果为:['王力宏','黄磊']

  注意:pop没有参数默认删除最后一个元素。remove('元素')删除一个不存在的元素会报错。

2.3 修改

  列表可以通过索引和切片修改。具体如下示例代码:

  lst1 = ['王者农药','魔兽世界','DNF','逆水寒','反恐精英']
  lst1[0] = '扫雷' # 把索引为0的元素改为 '扫雷'
  print(lst1) # ['扫雷', '魔兽世界', 'DNF', '逆水寒', '反恐精英']   lst1[1::2] = ['qq华夏','qq三国'] # 切片修改时,如果步长不是1,则要注意元素个数
  print(lst1) # 结果为:['扫雷', 'qq华夏', 'DNF', 'qq三国', '反恐精英']   lst1[1:3] = ['泡泡卡丁车']
  print(lst1) # 结果为:['扫雷', '泡泡卡丁车', 'qq三国', '反恐精英']

列表通过切片修改可理解为先删除再迭代添加。

注意:当切片修改时,若步长不是1,则要注意元素个数是否匹配,不匹配会报错。

2.4 查询

列表是一个可迭代对象,所以可以进行for循环,代码如下:

for el in lst:

  print(el)

2.5 其他操作

列表的其他操作有:sort,reverse,len,具体用法如下示例:

  lst = [1,34,20,6,89,4,66]
  lst.sort() # 排序,默认升序
  print(lst) # [1, 4, 6, 20, 34, 66, 89]   lst.sort(reverse=True)
  print(lst) # [89, 66, 34, 20, 6, 4, 1]   lst1 = ['张三','李四','李红','赵明','王刚','孙进']
  lst1.reverse()
  print(lst1) # ['孙进', '王刚', '赵明', '李红', '李四', '张三']

列表的长度可以用len(lst)。

三、列表的嵌套

采用降维操作,一层一层的看就好。示例如下:

  lst = [1,'太白','wusir',['马虎疼',['可口可乐'],'王健林']]
  print(lst[2]) # wusir
  print(lst[1:3]) # ['太白', 'wusir']
  print(lst[1][1]) # 白   lst[2] = lst[2].capitalize()
  print(lst) # [1, '太白', 'Wusir', ['马虎疼', ['可口可乐'], '王健林']]   lst[3][0] = lst[3][0].replace('虎','化')
  print(lst) # [1, '太白', 'Wusir', ['马化疼', ['可口可乐'], '王健林']]

四、元组和元组的嵌套

元组:俗称不可变的列表,又被称为只读列表,元组也是python的基本数据类型之一,用小括号()括起来,里面可以放任何数据类型的数据,可以查询,也可以循环,也可以切片,但就是不能改。具体示例如下代码:

tu = ("土豆丝","拍黄瓜","鱼香肉丝","红烧肉","小炒肉")

print(tu[0])      # 返回索引为0的元素

print(tu[1])

  print(tu[2:5])  # 切片之后还是元组类型

尝试修改元组则会报错,如下代码:

tu[1] = "锅包肉"    # 报错TypeError: 'tuple' object does not support item assignment

关于不可变,注意:这里元组不可变的意思是子元素不可变,而子元素内部的子元素是可以变的,这取决于子元素是否是可变对象。如下代码示例:

  tu = (1,'哈哈',[],'呵呵')
  # tu[2] = ['hello'] # 报错 TypeError: 'tuple' object does not support item assignment
  tu[2].append('hello')
  print(tu) # (1, '哈哈', ['hello'], '呵呵')

元组中如果只有一个元素,一定要添加一个逗号,否则就不是元组。如:tu = (1,)

空元组用 tu = tuple()表示。

元组也是可迭代对象,所以也可以用for循环遍历元组,代码如下:

for el in tu:

  print(el)

元组也有count(),index()等方法。

五、range

range可以帮我们获取到一组数据,通过for循环能够获取到这些数据。具体示例如下:

# range()是一个可迭代对象
for i in range(10): # range(n) 0 -> n-1
print(i) for i in range(1,10): # range(m,n) m -> n-1
print(i) for i in range(1,10,3): # range(m,n,q) m -> n-1 每q个取一个
print(i) for i in range(100,90,-1): # 倒着取
print(i) # 0 1 2 3 4 5
lst = ['砂锅','馒头','盖浇饭','刀削面','大麻花','大煎饼']
# 获取到列表的索引,拿到索引之后,可以拿到元素
for i in range(len(lst)):
print(i) # i就是lst的索引
print(lst[i])

最新文章

  1. DirectX runtime
  2. Codeforces Round B. Buttons
  3. [转载]触发ASSERT(afxCurrentResourceHandle != NULL)错误的原因
  4. Eclipse 导入项目后启动报异常:java.lang.UnsatisfiedLinkError: Native Library *.dll already loaded in another classloade 解决方法
  5. Erlang 进程被抢占的条件——一个进程长时霸占调度器的极端示例
  6. macbook air电池保养方法
  7. 如何从List<T>中筛选符合条件的数据的集合或个数
  8. 修改Android 程序的icon快捷方式图标和名称
  9. 【转】windows常用消息大全(系统消息、通告消息、用户消息)
  10. linux利用ssh远程执行多台机器执行同样的命令
  11. Android studio 编译出现的问题记录
  12. 自动化运维(2)之一键式单实例安装MySQL
  13. innodb 锁机制
  14. Nodejs之mssql模块的封装
  15. CSS中不透明度继承问题的处理
  16. JSP复习(part 4)
  17. svn服务器快速搭建及简单配置
  18. EditPlus正则表达式中英文详解(附常用事例操作)
  19. 深入理解javascript作用域系列第一篇
  20. __construct __destory __call __get __set

热门文章

  1. 简单讲一下 SpringMVC的执行流程?
  2. Jquery学习笔记(1)--JQuery原理,与JS对象互换,核心函数
  3. Spring中的IOC
  4. iOS学习笔记10 - Bundle和Info.plist
  5. 在CentOS 7上利用systemctl添加自定义系统服务 /usr/lib/systemd/
  6. 封装常用的selenium方法
  7. Papers of Word Embeddings
  8. HTML 中框架、层的运用
  9. linux 内核经典面试题
  10. ajax优点