1. 列表

1.1 列表的介绍

列表是python的基础数据类型之⼀,其他编程语⾔也有类似的数据类型。比如JS中的数组, java中的数组等等。它是以[ ]括起来,每个元素⽤','隔开⽽且可以存放各种数据类型:

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

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

1.2 列表的索引和切片

列表和字符串⼀样也拥有索引:

lst = ["麻花藤", "王剑林", "⻢芸", "周鸿医", "向华强"]
print(lst[0]) # 获取第⼀个元素
print(lst[1])
print(lst[2])
lst[3] = "流动强" # 注意. 列表是可以发⽣改变的. 这⾥和字符串不⼀样
print(lst) # ['麻花藤', '王剑林', '⻢芸', '流动强', '向华强']
s0 = "向华强"
s0[1] = "美" # TypeError: 'str' object does not support item assignment 不允许改变
print(s0)

列表的切片:

lst = ["麻花藤", "王剑林", "⻢芸", "周鸿医", "向华强"]
print(lst[0:3]) # ['麻花藤', '王剑林', '⻢芸']
print(lst[:3]) # ['麻花藤', '王剑林', '⻢芸']
print(lst[1::2]) # ['王剑林', '周鸿医'] 也有步⻓
print(lst[2::-1]) # ['⻢芸', '王剑林', '麻花藤'] 也可以倒着取
print(lst[-1:-3:-2]) # 倒着带步⻓

1.3 列表的增删改查

1.3.1 添加

注意,list和str是不⼀样的。list可以发⽣改变,所以直接就在原来的对象上进⾏了操作

lst = ["麻花藤", "林俊杰", "周润发", "周芷若"]
print(lst)
lst.append("wusir")
print(lst)

lst = []
while True:
  content = input("请输⼊你要录⼊的员⼯信息, 输⼊Q退出:")
  if content.upper() == 'Q':
     break
   lst.append(content)
print(lst)

lst = ["麻花藤", "张德忠", "孔德福"]
lst.insert(1, "刘德华") # 在1的位置插⼊刘德华. 原来的元素向后移动⼀位
print(lst) # 迭代添加
lst = ["王志⽂", "张⼀⼭", "苦海⽆涯"]
lst.extend(["麻花藤", "麻花不疼"])
print(lst)

1.3.2 删除

pop, remove, clear, del

lst = ["麻花藤", "王剑林", "李嘉诚", "王富贵"]
print(lst)
deleted = lst.pop() # 删除最后⼀个
print("被删除的", deleted)
print(lst)

el = lst.pop(2) # 删除2号元素
print(el)
print(lst)

lst.remove("麻花藤") # 删除指定元素
print(lst)
# lst.remove("哈哈") # 删除不存在的元素会报错
# # print(lst)

lst.clear() # 清空list
print(lst) # 切⽚删除
del lst[1:3]
print(lst)

1.3.3 修改

索引切片修改

# 修改
lst = ["太⽩", "太⿊", "五⾊", "银王", "⽇天"]
lst[1] = "太污" # 把1号元素修改成太污
print(lst)

lst[1:4:3] = ["麻花藤", "哇靠"] # 切⽚修改也OK. 如果步⻓不是1, 要注意. 元素的个

print(lst)

lst[1:4] = ["李嘉诚个⻳⼉⼦"] # 如果切⽚没有步⻓或者步⻓是1. 则不⽤关⼼个数
print(lst)

1.3.4 查询

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

for el in lst:
  print(el)

1.3.5 其他操作

lst = ["太⽩", "太⿊", "五⾊", "银王", "⽇天", "太⽩"]
c = lst.count("太⽩") # 查询太⽩出现的次数
print(c)

lst = [1, 11, 22, 2]
lst.sort() # 排序. 默认升序
print(lst)
lst.sort(reverse=True) # 降序
print(lst)

lst = ["太⽩", "太⿊", "五⾊", "银王", "⽇天", "太⽩"]
print(lst)
lst.reverse()
print(lst)

l = len(lst) # 列表的⻓度
print(l)

1.4 列表的嵌套

采⽤降维操作,⼀层⼀层的看就好。

lst = [1, "太⽩", "wusir", ["⻢⻁疼", ["可⼝可乐"], "王剑林"]]

# 找到wusir
print(lst[2])

# 找到太⽩和wusir
print(lst[1:3])

# 找到太⽩的⽩字
print(lst[1][1])

# 将wusir拿到. 然后⾸字⺟⼤写. 再扔回去
s = lst[2]
s = s.capitalize()
lst[2] = s
print(lst)
# 简写
lst[2] = lst[2].capitalize()
print(lst)

# 把太⽩换成太⿊
lst[1] = lst[1].replace("⽩", "⿊")
print(lst)

# 把⻢⻁疼换成⻢化疼
lst[3][0] = lst[3][0].replace("⻁", "化")
print(lst[3][0])

lst[3][1].append("雪碧")
print(lst)

2. 元组

元组: 俗称不可变的列表,⼜被成为只读列表。元组也是python的基本数据类型之⼀,⽤⼩括号括起来,⾥⾯可以放任何数据类型的数据,查询可以,循环也可以,切片也可以,但就是不能改。

tu = (1, "太⽩", "李⽩", "太⿊", "怎么⿊")
print(tu) print(tu[0])
print(tu[2])
print(tu[2:5]) # 切⽚之后还是元组

# for循环遍历元组
for el in tu:
   print(el) # 尝试修改元组
# tu[1] = "⻢⻁疼" # 报错 'tuple' object does not support item assignment

tu = (1, "哈哈", [], "呵呵")
# tu[2] = ["fdsaf"] # 这么改不⾏

tu[2].append("麻花藤") # 可以改了. 没报错
tu[2].append("王剑林")
print(tu)

关于不可变,注意: 这⾥元组的不可变的意思是⼦元素不可变,⽽⼦元素内部的⼦元素是可 以变,这取决于⼦元素是否是可变对象。元组中如果只有⼀个元素,⼀定要添加⼀个逗号,否则就不是元组。

tu = (1,)
print(type(tu))

元组也有count(), index(), len()等⽅法. 可以⾃⼰测试使⽤。

3. range

range可以帮我们获取到⼀组数据,通过for循环能够获取到这些数据。

for num in range(10):
   print(num)
for num in range(1, 10, 2):
   print(num)
for num in range(10, 1, -2): # 反着来, 和切⽚⼀样
   print(num)

最新文章

  1. Android开发学习之路-二维码学习
  2. Silverlight 动画性能
  3. 在ubuntu上搭建开发环境4---ubuntu简单的搭建LAMP环境和配置
  4. 使用附加导航(affix)实现内容切换
  5. openerp report image
  6. 【树链剖分】洛谷P3379 树链剖分求LCA
  7. 机器学习技法:13 Deep Learning
  8. jboss规则引擎KIE Drools 6.3.0 Final 教程(2)
  9. java web(1)
  10. ORM(四)字段参数
  11. eclipse下SpringMVC+Maven+Mybatis+MySQL项目搭建
  12. linux shell系列10 判断某个月中的星期六和星期天
  13. Ajax 及里面的XStream《黑马程序员_超全面的JavaWeb视频教程vedio》
  14. Spring框架学习02——Spring IOC 详解
  15. Navicat Premium 12连接Oracle时提示oracle library is not loaded的问题解决
  16. WCF trace、log
  17. 【Ray Tracing in One Weekend 超详解】 光线追踪1-7 Dielectric 半径为负,实心球体镂空技巧
  18. linux socket TCP UDP bind 同义IP和port
  19. Single Number 数组中除了某个元素出现一次,其他都出现两次,找出这个元素
  20. 20155334 实验五 Java网络编程及安全

热门文章

  1. 【STM32-V7】STM32H743XIH6开发板,丰富软件资源,强劲硬件配置,大量软件解决方案持续更新中(2019-12-12)
  2. FreeRTOS操作系统教程发布,支持F103,F407和F429,配套145个例子,1200页教程
  3. node 升级版本
  4. flush() 缓冲输出流的缓冲区问题
  5. Andorid Studio 新建模拟器无法联网问题
  6. CentOS环境下通过YUM安装软件,搭建lnmp环境
  7. sqlserver刷新视图
  8. 自己写的一个连数据库的音乐调用模块 MusicRj
  9. 微信支付和微信支付通知基于sdk的说明(2)
  10. Linux内核和用户空间通信之netlink