经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
第五天-列表 元组
来源:cnblogs  作者:刹那灯火明  时间:2018/10/23 9:24:32  对本文有异议

一、列表

  简介:相比于字符串.不仅可以存放不同数据类型. 且可以存放大量数据.列表是有序(按照你保存的顺序),有索引,可以切片方便取值。

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

 

  列表的索引和切片:

  列表和字符串一样有索引

  1. 1 #索引切片
  2. 2 lis = ["麻花腾","王剑林","马芸","刘东墙","雷君"]
  3. 3 print(lis[0]) # 索引获取元素
  4. 4 print(lis[1])
  5. 5 lis[3] = "流动墙" # 与字符串不同 列表可发生改变
  6. 6 print(lis)
  7. 7
  8. 8 print(lis[0:3]) # 切片
  9. 9 print(lis[-3:])
  10. 10 print(lis[0::2]) # 带步长
  11. 11 print(lis[-1:-5:-2]) # 倒着取

 

  列表的增删改查:

  注意, list和str是不一样的. lst可以发生改变. 所以直接就在原来的对象上进?了操作

  1. 1 #新增 append,insert,extend
  2. 2 #.append() 追加 添加到末尾
  3. 3 lis = ["周杰伦","林俊杰","王力宏"]
  4. 4 print(lis.append("?.,['+_']")) # None 没还回值 打印为空
  5. 5 lis.append("许巍")
  6. 6 lis.append("周传雄")
  7. 7 print(lis)
  8. 8
  9. 9 # .insert() 插入 在某位置插入 原来的元素后移一位
  10. 10 lis.insert(3,"徐良")
  11. 11 print(lis)
  12. 12 lis.insert(0,"许嵩") # 插入 索引变更 效率不高
  13. 13 print(lis)
  14. 14
  15. 15 #迭代添加 .extend()
  16. 16 lis1 = ["周杰伦","林俊杰"]
  17. 17 lis1.extend("王力宏") # 等同 ["王力宏"][0]
  18. 18 print(lis1) # 迭代 ['周杰伦', '林俊杰', '王', '力', '宏']
  19. 19 lis1.extend(["苏打绿"]) # 整体添加 不常用
  20. 20 print(lis1)
  1. 1 # 2.删除 pop,remove,clear,del
  2. 2 # .pop() 弹出一个
  3. 3 lis2 = ["天龙八部","笑傲江湖","倚天屠龙记","射雕英雄传","书剑恩仇录"]
  4. 4 lis2.pop()
  5. 5 print(lis2) # 默认弹出最后一个
  6. 6 lis2.pop(3)
  7. 7 print(lis2) # 弹出指定位置元素
  8. 8
  9. 9 # .remove() 移除指定元素
  10. 10 lis2.remove("倚天屠龙记")
  11. 11 print(lis2)
  12. 12 lis01 = ["天龙八部","笑傲江湖","倚天屠龙记","射雕英雄传","倚天屠龙记","书剑恩仇录"]
  13. 13 lis01.remove("倚天屠龙记") # 当有多个时 只移除第一个
  14. 14 print(lis01)
  15. 15 lis01.remove("雪山飞狐") # 移除不存在元素会报错 ValueError: list.remove(x): x not in list
  16. 16 print(lis01)
  17. 17
  18. 18 # del 切片删除
  19. 19 del lis2[0] # 类似pop
  20. 20 print(lis2)
  21. 21 del lis2[1:] # 批量删除
  22. 22 print(lis2)
  23. 23 del lis2[1:4:
  1. 1 # 3.修改 索引切片
  2. 2 lis02 = ["周星驰","周润发","周杰伦","周笔畅","周传雄"]
  3. 3 # lis02[1] = "周树人" # 按索引修改
  4. 4 # print(lis02)
  5. 5 # lis02[0:3]="哇哈哈" # 迭代修改(步长为1)
  6. 6 # print(lis02)
  7. 7 # lis02[0:3] = ["哇哈哈"] # 元素为列表 原3元素合为一个
  8. 8 # print(lis02)
  9. 9 lis02[::2] ="周树人","周作人","周星星" # 步长不是1时 元素的个数必须匹配
  10. 10 print(lis02)
  1. 1 # 4.查询 for
  2. 2 lis2 = ["天龙八部","笑傲江湖","倚天屠龙记","射雕英雄传","书剑恩仇录"]
  3. 3 for shu in lis2: # shu 表示列表中的每一项 lis2是一个可迭代对象
  4. 4 print(shu )
  1. 1 # 5.其他操作 .count() .sort() .reverse()
  2. 2 lis = ["天龙八部","笑傲江湖","倚天屠龙记","天龙八部","射雕英雄传","书剑恩仇录"]
  3. 3 c = lis.count("天龙八部") # 查找天龙八部出现的次数
  4. 4 print(c) # 返回 2
  5. 5 # .sort() 有序 排序
  6. 6 lis1 = [1,2,45,6,3,78,96,24,57]
  7. 7 # lis1.sort() # 排序 从小到大 升序
  8. 8 # print(lis1)
  9. 9 # lis1.sort(reverse = True) # 降序 从大到小
  10. 10 # print(lis1)
  11. 11 # 无序 翻转 .reverse()
  12. 12 lis1.reverse() # 翻过来
  13. 13 print(lis1)
  14. 14 print(len(lis1)) # 长度

 

 

二、列表的嵌套

  列表嵌套:降维操作 一层一层看就好

  1. 1 # 降维操作 一层一层看就好
  2. 2 lis = [["香蕉","苹果","荔枝"],["咖啡","果汁","牛奶"],["煎饼","牛排","奶酪"]]
  3. 3 print(lis[1][0])
  4. 4 print(lis[2][1:]) # 找到牛排 奶酪
  5. 5 print(lis[0][2][0]) # 降维 一层层找
  6. 6
  7. 7 # 把煎饼中的饼换成蛋 注意嵌套修改时数据类型
  8. 8 lis[2][0] = lis[2][0].replace("","") # 多层嵌套的时候如果进行操作。 需要重新赋值。 原因是替换的内容是一个 字符串
  9. 9 print(lis) # [['香蕉', '苹果', '荔枝'], ['咖啡', '果汁', '牛奶'], ['煎蛋', '牛排', '奶酪']]
  10. 10
  11. 11 lis[0][1] = "葡萄" # 内部元素是可变数据类型 可直接修改
  12. 12 print(lis)

 

三、元祖和元祖嵌套

  元祖:tuple 表示 与列表相比 除了不能增删改 其他与列表一样

  与列表类似由()组成,可放任何类型数据,内部元素用逗号隔开 但:只读不可改 可索引切片循环

  1. 1 tup = ("001","张三","李四","王二","@$#.,")
  2. 2 print(tup)
  3. 3 print(tup[0]) # 索引
  4. 4 print(tup[3])
  5. 5 print(tup[0:3]) # 切片后仍是元祖 ('001', '张三', '李四')
  6. 6 print(tup[0:4:2])

  元祖可改与不可改

  1. 1 tup1 = ("周杰伦", "哇哈哈", "爽歪歪", ["酸酸乳", "三鹿奶粉", "AD钙奶"])
  2. 2 # tup1[0] = "周笔畅" # 子元素 不可改
  3. 3 tup1[3].append("优酸乳")
  4. 4 print(tup1) # ('周杰伦', '哇哈哈', '爽歪歪', ['酸酸乳', '三鹿奶粉', 'AD钙奶', '优酸乳'])
  5. 5 # 注意:不可变是子元素不可变.而子元素内的子元素可变,这取决于子元素是否是可变对象.
  6. 6 # 元组的不可变. 元组的不可变指的是元组内部第一层元素的内存地址

  

  几个特殊情况

  1. 1 lis =[] # 新列表
  2. 2 lis1 = list() # 新列表
  3. 3 print(lis,lis1) # [] []
  4. 4
  5. 5 tup1 = () # 元祖
  6. 6 tup2 = tuple()# 元祖
  7. 7 print(tup1,tup2) # () () 空元组 不可改 无意义

  

  元祖若只有一个元素,必须加逗号

  1. 1 # 元祖如果只有一个元素 必须加逗号
  2. 2 tup3 = (1)
  3. 3 tup3 = (1*(3-9)/8+9*4) # () 可以是 运算符 优先级
  4. 4 tup4 = ("爽歪歪",)
  5. 5 print(tup3) # 不是元组
  6. 6 print(tup4) # 是元组

 

 

四、range

  range 可以快速获取一组数据 通过for循环获取这些数据

  1. 1 # range 可以快速获取一组数据 通过for循环获取这些数据
  2. 2
  3. 3 # 用while获取
  4. 4 i = 0
  5. 5 while i<100:
  6. 6 print(i)
  7. 7 i +=1
  8. 8
  9. 9 # range 获取
  10. 10 for i in range(100):
  11. 11 print(i)
  12. 12
  13. 13 for i in range(0,20,2): # 每两个获取一个
  14. 14 print(i)
  15. 15
  16. 16 for i in range(20,0,-2): # 反过来切片 也一样 [ ) 前闭后开
  17. 17 print(i)

   打印出索引 + 元素

  1. 1 # 打印出索引 + 元素
  2. 2 lis = ["语文", "数学", "英语", "代数", "体育", "生物", "化学"]
  3. 3 for i in lis:
  4. 4 print(i) # 默认for会忽略掉 索引号
  5. 5
  6. 6 for i in range(len(lis)):
  7. 7 print(i,lis[i]) # i 索引 lis[i] 获取元素
  8. 8
  9. 9 e = "今天晚上要加班!"
  10. 10 for i in range(len(e)):
  11. 11 print(i,e[i])

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号