01_列表

  1. li = [123,"hello",35.5,[1,2,3,4],["hello","world"]]
  2. print(li,type(li))
  3. # print(li[0][1])
  4. print(li[1][1])
  5. print(li[3][1])
  6. # 下标可以是负数
  7. print(li[-1])
  8. print(li[3])
  9. print(li[-2])
  10. 列表的内置函数
  11. li3 = [100,200,300]
  12. # 增加
  13. # 1. append 在结尾添加一个数据
  14. li2.append(li3)
  15. print(li2)
  16. # 2. extend 扩展列表,将两个列表合并
  17. li2.extend(li3)
  18. print(li2)
  19. # 3. insert 在指定位置添加元素
  20. li2.insert(0,1000)
  21. print(li2)
  22. # 删除
  23. # 1. pop 默认删除最后一个元素,也可以传递下标
  24. del_ele = li2.pop(0)
  25. print(li2)
  26. print(del_ele)
  27. # 2. del 是pytong内置的关键字 可以删除数据 可以删除任何变量
  28. del li2[0] //关键字
  29. print(li2)
  30. # 3. clear 清空列表
  31. # li2.clear()
  32. print(li2)
  33. # 查询
  34. # 1.可以用下标获取元素
  35. # 2. count获取的是某个数据出现了多少次
  36. #li_count = li2.count()
  37. print(li2.count(2))
  38. # 修改
  39. # 1. 可以用下标
  40. # 其他操作
  41. # 1. 反序
  42. li2.reverse()
  43. print(li2)
  44. # 2. 排序
  45. li2.pop(3)
  46. li2.sort() 正向排序
  47. print(li2)
  48. li2 = [1,2,3,2,2,4,5,6,7]
  49. print(set(li2))
  50. cnt=0
  51. num=1
  52. def tset():
  53. global cnt
  54. for i in (1,2,3):
  55. cnt=cnt+1
  56. num=10
  57. tset()
  58. print(cnt,num)
  59. print(type('111'))
  60. a=input('请输入x')
  61. b=input('请输入y')
  62. print("坐标x={},坐标y={}".format(a,b))
  63. number=100
  64. name='小明'
  65. info=name+number
  66. print(info)
  67. from functools import reduce
  68. sum2 = reduce(lambda x, y: x+y, range(5)) # 使用 lambda 匿名函数 range(x) 从0开始,不包括x本身
  69. print(sum2)
  70. li=[]
  71. for i in range(1,101):
  72. li.append(i**2)
  73. print(li)
  74. li2=[i*i for i in range(1,10)]
  75. print(li2)
  76. #推导表达式
  77. li3=[85,55,80,75,100,40,50,60,37,42]
  78. # li4=[ i>60 for i in li3]
  79. # print(li4)
  80. li5=[ x for x in li3 if x>60]
  81. print(li5)
  82. dic1={x:x**2 for x in range(11)}
  83. print(dic1)
  84. while 1:
  85. a= int(input("请输入3个数:"))
  86. b= int(input("请输入3个数:"))
  87. c= int(input("请输入3个数:"))
  88. li=[a,b,c]
  89. for i in range(2):
  90. for j in range(2):
  91. if (li[j]>li[j+1]):
  92. li[j],li[j + 1]=li[j+1],li[j]
  93. print(li)
  94. while 1:
  95. n= int(input("请输入分数:"))
  96. if 100<n<=90:
  97. print("Got A")
  98. elif 80<=n<90:
  99. print("Got B")
  100. elif 70 <= n < 80:
  101. print("Got C")
  102. elif 60 <= n < 70:
  103. print("Got D")
  104. elif 60 >n:
  105. print("Got E")
  106. else:
  107. print("不及格")
  108. li1=[7,8,9,7,2,1,48,9]
  109. li1.sort()
  110. print(li1)
  111. li1.reverse()
  112. print(li1)
  113. str1="hello world"
  114. str2="WELCOME"
  115. print(str1.upper())
  116. print(str2.lower())
  117. numberA=100
  118. numberB=200
  119. print(numberA,numberB)
  120. numberA,numberB=numberB,numberA
  121. print(numberA,numberB)
  122. li=[1,2,3,4,5,6,7,8,9,10]
  123. print(li[1:10:2])
  124. i=0
  125. li=[]
  126. while i<10:
  127. n = int(input("请输入{}数:".format(i)))
  128. li[i]=n
  129. i+=1
  130. # mylist=list(set(li))
  131. print(li)
  132. list=[]
  133. list.extend(eval(input('请输入值:\n').split()))
  134. print(list)
  135. lis =list(map(int,input("请输入10个数:").split()))
  136. mylist=list(set(lis))
  137. print(mylist)
  138. list=[]
  139. for x in range(0,3):
  140. buf=eval(input())
  141. list.append(buf)
  142. print(list)
  143. li=[1,2,3]
  144. print(max(li))

02_元组

  1. # 元组 可以认为是常量数组
  2. tu1 = (1,2,3,4,5)
  3. print(tu1,type(tu1))
  4. # tu1[3] = 100 不能修改
  5. tu2 = (1,2,3,[100,200],4,5,6)
  6. # tu2[3] = 0
  7. # 元组中的元素是列表 这个列表的内容是可以改变的。
  8. tu2[3][1] = 400
  9. print(tu2,type(tu2))
  10. # 定义一个元素的元组
  11. tu3 = (200,)
  12. print(tu3,type(tu3))
  13. # 删除元组的元素
  14. del tu2[0]

03_序列的通用操作

  1. 字符串 列表 元组 都算是序列,序列有通用的操作
  2. 1. 下标
  3. 2. 切片 前闭后开,不包括后面的元素
  4. li = ["关羽","张飞","赵云","马超","黄忠"]
  5. li1 = li[1:3]
  6. print(li1)
  7. str1 = "helloworld"
  8. str2 = str1[3:6]
  9. print(str2)
  10. tu1 = ("关羽","张飞","赵云","马超","黄忠")
  11. tu2 = tu1[1:4]
  12. print(tu1,tu2)
  13. 其他切片方式 设置步长
  14. li = ["关羽","张飞","赵云","马超","黄忠","诸葛亮","周瑜","鲁肃","甘宁"]
  15. li1 = li[0:9:3]
  16. print(li1)
  17. # 其他切片方式 使用负索引
  18. li2 = li[-9:-7]
  19. print(li2)
  20. # 省略第一个数,就是从头开始,省略第二个数就是到结尾结束
  21. li3=li[::3]
  22. print(li3)
  23. 3. 加法操作 拼接
  24. li1 = [1,2,3,4,5]
  25. li2 = ["hello","world"]
  26. li3 = li1 + li2
  27. print(li3)
  28. str1 = "hello"+"15pb"
  29. print(str1)
  30. tu1 = (1,2,3)
  31. tu2 = (3,2,1)
  32. tu3 = tu1+tu2
  33. print(tu3)
  34. 4. 乘法操作 将原来的序列重复n
  35. print("-"*50)
  36. li = [1,2,3]*10
  37. tu1 = (1,2,3)*10
  38. print(li)
  39. print(tu1)
  40. 5. 判断某个一元素是否在序列中 可以使用 in 运算符
  41. li1 = [3,2,7,8,4,3,2,7,9,0]
  42. num = int(input("请输入一个数字:"))
  43. if num in li1:
  44. print("%d在列表中"%num)
  45. else:
  46. print("%d不在列表中"%num)
  47. # 5. 关于序列操作的一些通用内置函数
  48. li = [1,2,3,4,5,6,7,8,9,10]
  49. # 求元素个数
  50. print(len(li))
  51. # 求最大值
  52. print(max(li))
  53. # 求最小值
  54. print(min(li))
  55. # 求和
  56. print(sum(li))
  57. # 排序
  58. print(sorted(li))
  59. # 反序
  60. print(list(reversed(li)))
  61. # 转换 list 转为列表 str() 转为字符串 tuple 转换为元组
  62. str1 = str(li)
  63. print(str1)
  64. tu1 = tuple(li)
  65. print(tu1)

04_字典

  1. 定义字典
  2. dic1 = {"name":"小明","age":18,"score":98.5}
  3. print(dic1["name"])
  4. print(dic1["age"])
  5. print(dic1["score"])
  6. dic2 = {1:"小明",8:"小白",15:"小黑"}
  7. 字典中的元素 直接动态添加就可以
  8. dic2[5] = "小绿"
  9. print(dic2)
  10. 数字 字符串 元组都可以作为键,但是列表不行
  11. dic3 = {(1,2,3):"test"}
  12. print(dic3[(1,2,3)])
  13. 一些函数
  14. 获取所有的key
  15. dic1 = {"name":"小明","age":18,"score":98.5}
  16. li_key = dic1.keys()
  17. print(li_key)
  18. # 获取所有的value
  19. li_value = dic1.values()
  20. print(li_value)
  21. # 判断某一个key是否存在 可以使用 in 判断key是否存在
  22. dic2 = {1:"小明",8:"小白",15:"小黑"}
  23. if 1 in dic2:
  24. print(dic2[1])

05_关于数据的问题

  1. # python 对于基本数据类型,不会让已经存在的数据出现2份以上
  2. # a = 100
  3. # b = a
  4. # c = 101
  5. # print(id(a),id(b),id(c))
  6. # a += 1
  7. # print(id(a),id(b),id(c))
  8. # 对于列表呢
  9. li1 = [1,2,3,4,5]
  10. li2 = li1
  11. li1[1] = 100
  12. # 此时li1和li2 引用到了同一个位置,所以li1的改变会影响到li2
  13. print(id(li1),id(li2))
  14. print(li2)
  15. # 如何避免这个问题呢??
  16. li3 = li1.copy()
  17. li1[3] = 200
  18. print(id(li1),id(li3))
  19. print(li1)
  20. print(li3)
  21. 另外一个隐藏的比较深的问题
  22. li4 = [1,2,3,["hello","world"],1,2]
  23. li5 = li4.copy()
  24. li4[0]= 100
  25. li4[3][1] = "15pb"
  26. print(li4)
  27. print(li5)
  28. import copy
  29. li4 = [1,2,3,["hello","world"],1,2]
  30. li5 = copy.deepcopy(li4)
  31. li4[0]= 100
  32. li4[3][1] = "15pb"
  33. print(li4)
  34. print(li5)

06_拆包和装包

  1. # 装包
  2. m = 1,2,3
  3. print(m)
  4. a = 10
  5. b = 20
  6. # 这个交换变量,涉及到了先装包,再拆包。
  7. a,b = b,a
  8. # 拆字符串给每一个变量
  9. str1 = "nihao"
  10. z,x,c,v,b = str1
  11. print(z)
  12. # 拆列表赋值给每一个变量,并不确定长度的时候,可以
  13. # 在最后面加一个 *变量名 接收所有剩下
  14. li = ["hello",1,100,200]
  15. q,w,e,r,*last = li
  16. print(q,w,last)
  17. # 还有一种拆包方法 使用* 直接拆包
  18. print(*li)

07_for循环

  1. 直接遍历列表
  2. li = ["hello","world","15pb",10,20,30]
  3. for ele in li:
  4. print(ele)
  5. 直接遍历字符串
  6. for ele in "helloworld":
  7. print(ele)
  8. 使用range函数遍历
  9. 遍历输出0100 range函数能够根据起始位置,终止位置,步长构建一个
  10. 可以循环的序列
  11. for ele in range(50,101,10):
  12. print(ele)
  13. 根据下标遍历列表 1
  14. li =["关羽","张飞","赵云","马超","黄忠","诸葛亮","周瑜","鲁肃","甘宁"]
  15. for index in range(len(li)):
  16. print("第{}个元素是{}".format(index,li[index]))
  17. 根据下标遍历列表2 enumerate这个函数能够返回 下标和内容的键值对
  18. for index,item in enumerate(li):
  19. print(index,":",item)
  20. 遍历字典 ,直接遍历,只能遍历key
  21. dic1 = {"name":"小明","age":18,"score":98.5}
  22. for key in dic1:
  23. print(key,":",dic1[key])
  24. 直接遍历键和值
  25. for key,ele in dic1.items():
  26. print(key,":",ele)
  27. for i in range(1,10):
  28. for j in range(1,1+i):
  29. print(j,end=" ")
  30. print("")