通过上个博客的学习,相信大家已经对Python是什么东西应该有了相对应的了解,这里也包括Python的一些语法(比如Python在写for循环和if判断的时候都是会有缩进的)。这张博客大概会对Python数据类型做一个详细的解释。其中就包括字符串、元组、字典的一些用法。

本节内容

  1. 列表、元组操作
  2. 字符串操作
  3. 字典操作
  4. 集合操作
  5. 文件操作
  6. 字符编码与转码

1. 列表、元组操作

列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

定义列表

  1. names=["Leon","CHEN","WU”,"QIAO"]

通过下标访问列表中的元素,下标从0开始计数

  1. >>> names[0]
  2. 'Leon'
  3. >>> names[2]
  4. 'WU'
  5. >>> names[-1]
  6. 'QIAO'
  7. >>> names[1] #还可以倒着取
  8. 'CHEN'

切片:取多个元素

  1. >>> names = ["Leon","CHEN","WU","QIAO"] #去所以0~2的值,这里记住,Python里面的去索引值时顾头不顾尾的
  2. >>> names[0:2]
  3. ['Leon', 'CHEN']
  4. >>> names[0:] #前面为0后面没有值,就是取所有
  5. ['Leon', 'CHEN', 'WU', 'QIAO']
  6. >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个
  7. ['Leon', 'WU']

追加

  1. >>> names
  2. ['Leon', 'CHEN', 'WU', 'QIAO']
  3. >>> names.append("LOVER")
  4. >>> names
  5. ['Leon', 'CHEN', 'WU', 'QIAO', 'LOVER']

这里大家的了解一点就是追加是向列表中最后的位置添加一个值

插入

  1. >>> names
  2. ['Leon', 'CHEN', 'WU', 'QIAO', 'LOVER']
  3. >>> names.insert(2,"JACK") #在索引为2的地方插入“JACK”
  4. >>> names
  5. ['Leon', 'CHEN', 'JACK', 'WU', 'QIAO', 'LOVER']
  6. >>> names.insert(5,"MYLOVER") #在索引为5的点插入“MYLOVER”
  7. >>> names
  8. ['Leon', 'CHEN', 'JACK', 'WU', 'QIAO', 'MYLOVER', 'LOVER']

插入方法

  1. >>> names
  2. ['Leon', 'CHEN', 'JACK', 'WU', 'QIAO', 'MYLOVER', 'LOVER']
  3. >>> a = [1,2,3]
  4. >>> names.extend(a) #在列表后面追加
  5. >>> names
  6. ['Leon', 'CHEN', 'JACK', 'WU', 'QIAO', 'MYLOVER', 'LOVER', 1, 2, 3]
  7. >>> name_copy = names.copy() #将names 复制一个name_copy
  8. >>> name_copy
  9. ['Leon', 'CHEN', 'JACK', 'WU', 'QIAO', 'MYLOVER', 'LOVER', 1, 2, 3]
  10. >>> names.count("CHEN") #计算出“CHEN”出现的次数
  11. 1
  12. >>> names
  13. ['Leon', 'CHEN', 'JACK', 'WU', 'QIAO', 'MYLOVER', 'LOVER', 1, 2, 3]
  14. >>> names.sort() “排序,按照 ASCII码正向排序
  15. Traceback (most recent call last): #在Python3.X中字符串不能和数字放在一起
  16. File "<stdin>", line 1, in <module>
  17. TypeError: unorderable types: int() < str()
  18. >>> names[-1] = ""
  19. >>> names[-2] = ""
  20. >>> names[-3] = ""
  21. >>> names
  22. ['CHEN', 'JACK', 'LOVER', 'Leon', 'MYLOVER', 'QIAO', 'WU', '', '', '']
  23. >>> names.sort()
  24. >>> names
  25. ['', '', '', 'CHEN', 'JACK', 'LOVER', 'Leon', 'MYLOVER', 'QIAO', 'WU']
  26. >>> names.reverse() #反向排序
  27. >>> names
  28. ['WU', 'QIAO', 'MYLOVER', 'Leon', 'LOVER', 'JACK', 'CHEN', '', '', '']
  29. >>> names.index("Leon")
  30. 3

这里大家需要知道一点copy方法的用处可不止这些,后面会介绍到

这里我们简单介绍下元祖

  1. names = ("alex","jack","eric")
  2. names.index()
  3. names.count()
  4. #元组只有两种方法,这里就不试了

ps:三元运算

  1. >>> a = 3
  2. >>> b = 5
  3. >>> c = a + b if a > b else a - b #if条件成立执行左边,否则执行右边
  4. >>> c
  5. -2

三元运算

2. 字符串相关操作

  1. name = 'wuzhihu\tliuyao'
  2. print(name.capitalize()) # 首字母变大写
  3. print(name.casefold()) #全部变小写
  4.  
  5. print(name.center(9,'')) #字符串长度不够的地方用指定的单个字符代替,先右后左
  6. print(name.count('u')) #统计字符在字符串中出现的次数
  7. print(name.encode()) #编码转换
  8. print(name.endswith('h')) #判断字符串已什么结束,返回布尔值
  9. print(name.expandtabs(5)) #如果字符串中有\t建,则把\t的值设置为50
  10. print(name.find('u')) #在字符串中找到匹配的字符并返回下标
  11. msg = 'ni hao {name},我今年{age}'
  12. print(msg.format(age=22,name=name)) #另一种格式化输出,可以不考虑顺序,还可以直接定义变量
  13. # print(name.format_map())
  14. print(name.index('wu')) #字符索引
  15. m = 'A'
  16. print(num.isalnum()) #判断字符串是不是全部为阿拉伯数字和字母
  17. print(num.isalpha()) #判断是否只包含阿拉伯字母
  18. print(num.isdecimal()) #判断字符串是否只包含十进制数字
  19. print(num.isdigit()) #判断字符串是否为数字,汉字数字为假
  20. print(num.isidentifier()) #是不是一个合法的变量名
  21. print(name.islower()) #判断是否是小写
  22. print(num.isnumeric()) #判断是否为数字,可判断汉字
  23. print(num.isprintable()) #可否打印
  24. print(num.isspace()) #判断是否是空格,空不算,空为False
  25. print(num.istitle()) #判断是否为标题
  26. print(num.isupper()) #判断是否全部为大写
  27. print(num.join('sdf')) #后面的字符串或列表用前面的字符串分割,只能操作一元列表
  28. print(num.ljust(2,'a')) #从左边数,字符串长度不够用指定的单个字符填充
  29. print(num.rjust(2,'a')) #从右边数,字符串长度不够用指定的单个字符填充
  30. print(num.lower()) #将大写变为小写
  31. print(num.lstrip()) #去除左边空白
  32. print(num.rstrip()) #去除右边空白
  33. print(num.rsplit()) #去除右边空白
  34.  
  35. from_str = "!@#$%^"
  36. to_str = "abhziq"
  37. trans_table = str.maketrans(to_str,from_str)
  38. print("wuzhihu".translate(trans_table))
  39.  
  40. print('wuzhihu'.partition('u')) #按指定字符分割
  41. print('wuzhihu'.replace('u','bbbbbbbbbbbbbb',1)) #替换字符 ,默认替换全部
  42. print('wuzhihu'.split('z')) #已指定字符切成列表

相信看过的人都应该发现了端倪,上面的变量对应的一些值为啥都是别人的名字呢,没错,这个并不是我的笔记,而是我同事吴志虎的,况且我做的笔记都这么详细,哪是他这种玩具笔记可以相提并论呢。0.0

3.字典的相关操作

字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容

语法:

  1. info = {
  2. 'name1': "LEON",
  3. 'name2': "CHEN",
  4. 'name3': "WU",
  5. }

字典的特性:

  • dict是无序的
  • key必须是唯一的,so 天生去重

增加、删除、修改、查找

  1. msg = {
  2. "name1":"Leon",
  3. "name2":"jack",
  4. "name3":"rose",
  5. "name4":"blue"
  6. } #创建一个字典
  7.  
  8. >>> msg
  9. {'name3': 'rose', 'name2': 'jack', 'name4': 'blue', 'name1': 'Leon'}
  10. >>> msg["name5"] = "CHEN" #增加
  11. >>> msg
  12. {'name5': 'CHEN', 'name3': 'rose', 'name2': 'jack', 'name4': 'blue', 'name1': '
  13. eon'}
  14. >>> msg.pop("name4") #删除方式一
  15. 'blue'
  16. >>> msg
  17. {'name5': 'CHEN', 'name3': 'rose', 'name2': 'jack', 'name1': 'Leon'}
  18. >>> del msg["name2"] #删除方式二
  19. >>> msg
  20. {'name5': 'CHEN', 'name3': 'rose', 'name1': 'Leon'}
  21. >>> msg.popitem() #随机删除
  22. ('name5', 'CHEN')
  23. >>> msg
  24. {'name3': 'rose', 'name1': 'Leon'}
  25. >>> "name3" in msg #查看key是否在字典中是返回true,否则FALSE
  26. True
  27. >>> msg.get("name3") #获取key对应的value
  28. 'rose'
  29. >>> msg["name3"] #获取key 对应的value(方式二)
  30. 'rose'
  31. >>> msg["name3"] = "CHEN" #修改key对应的value值
  32. >>> msg
  33. >>>{'name3': 'CHEN', 'name1': 'Leon'}

字典的多层嵌套

  1. msg = {
  2. "中国":{
  3. "北京":"海淀",
  4. "上海":"徐家汇",
  5. },
  6. "美国":{
  7. "纽约":["皇后区","布鲁克林"],
  8. "洛杉矶":"好莱坞",
  9. }
  10. }

ps:知识点补充

  1. >>> for i,v in enumerate(range(3,10)):
  2. ... print(i,v)
  3. ...
  4. 0 3
  5. 1 4
  6. 2 5
  7. 3 6
  8. 4 7
  9. 5 8
  10. 6 9
  11.  
  12. #通过上面的代码我们发现通过enumerate循环的值中分为两个部分i,v其实第一列是索引对应的是i,第二部分对应的是3-10索引的值

通过上面的博文我们得知了字典的一些基本用法,下面我们需要做一个补充

  1. #values
  2. >>> info.values()
  3. dict_values(['LongZe Luola', 'XiaoZe Maliya'])
  4.  
  5. #keys
  6. >>> info.keys()
  7. dict_keys(['stu1102', 'stu1103'])
  8.  
  9. #setdefault
  10. >>> info.setdefault("stu1106","Leon")
  11. 'Leon'
  12. >>> info
  13. {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Leon'}
  14. >>> info.setdefault("stu1102","龙泽萝拉")
  15. 'LongZe Luola'
  16. >>> info
  17. {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Leon'}
  18.  
  19. #update
  20. >>> info
  21. {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Leon'}
  22. >>> b = {1:2,3:4, "stu1102":"龙泽萝拉"}
  23. >>> info.update(b)
  24. >>> info
  25. {'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Leon'}
  26.  
  27. #items
  28. info.items()
  29. dict_items([('stu1102', '龙泽萝拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Leon')])
  30.  
  31. #通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个
  32. >>> dict.fromkeys([1,2,3],'testd')
  33. {1: 'testd', 2: 'testd', 3: 'testd'}

  字典的循环:

  1. #方法1
  2. for key in info:
  3. print(key,info[key])
  4.  
  5. #方法2
  6. for k,v in info.items(): #会先把dict转成list,数据里大时莫用
  7. print(k,v)

  话说光看不做假把式,下面有一个联系,博友们也可以看一看

  

程序:购物车程序

需求:

  1. 启动程序后,让用户输入工资,然后打印商品列表
  2. 允许用户根据商品编号购买商品
  3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
  4. 可随时退出,退出时,打印已购买商品和余额
  1. procu_list = [
  2. ["iphone7",6500],["mackbook",12500],
  3. ["pen",2],["luleisi",55]
  4. ]
  5. shopcart = []
  6.  
  7. money = int(input("you're money>>"))
  8.  
  9. while True:
  10. for i,x in enumerate(procu_list):
  11. print("%s\t%s\t%s"%(i,x[0],x[1]))
  12. choose = input(">>>").strip()
  13. if choose.isdigit():
  14. choose = int(choose)
  15. if choose < len(procu_list) and choose >= 0:
  16. product_list = procu_list[choose]
  17. if money >= product_list[1]:
  18. money -= product_list[1]
  19. shopcart.append(product_list)
  20. print("你购买的是%s花了%s你还剩%s赶紧提好裤子"%(product_list[0],product_list[1],money))
  21. else:
  22. lost = product_list[1] - money
  23. print("你还差%s赶紧把你的老板杀了,你就有钱了..."%(lost))
  24. continue
  25.  
  26. else:
  27. print("请输入正确的序列")
  28.  
  29. elif choose == "exit":
  30. print(money,shopcart)
  31. print("alrealding exit...")
  32. break

购物车答案

4.集合的相关操作

集合是一个无序的,不重复的数据组合,它的主要作用如下:

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集等关系

常用操作

  1. s = set([3,5,9,10]) #创建一个数值集合
  2.  
  3. t = set("Hello") #创建一个唯一字符的集合
  4.  
  5. a = t | s # t 和 s的并集
  6.  
  7. b = t & s # t 和 s的交集
  8.  
  9. c = t s # 求差集(项在t中,但不在s中)
  10.  
  11. d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)
  12.  
  13. 基本操作:
  14.  
  15. t.add('x') # 添加一项
  16.  
  17. s.update([10,37,42]) # 在s中添加多项
  18.  
  19. 使用remove()可以删除一项:
  20.  
  21. t.remove('H')
  22.  
  23. len(s)
  24. set 的长度
  25.  
  26. x in s
  27. 测试 x 是否是 s 的成员
  28.  
  29. x not in s
  30. 测试 x 是否不是 s 的成员
  31.  
  32. s.issubset(t)
  33. s <= t
  34. 测试是否 s 中的每一个元素都在 t
  35.  
  36. s.issuperset(t)
  37. s >= t
  38. 测试是否 t 中的每一个元素都在 s
  39.  
  40. s.union(t)
  41. s | t
  42. 返回一个新的 set 包含 s t 中的每一个元素
  43.  
  44. s.intersection(t)
  45. s & t
  46. 返回一个新的 set 包含 s t 中的公共元素
  47.  
  48. s.difference(t)
  49. s - t
  50. 返回一个新的 set 包含 s 中有但是 t 中没有的元素
  51.  
  52. s.symmetric_difference(t)
  53. s ^ t
  54. 返回一个新的 set 包含 s t 中不重复的元素
  55.  
  56. s.copy()
  57. 返回 set s”的一个浅复制

5.文本的相关操作

  1. Flightless Bird American Mouth - 暮光之城
  2. I was a quick wet boy
  3. Diving too deep for coins
  4. All of your street light eyes
  5. Wide on my plastic toys
  6. And when the cops closed the fair
  7. I cut my long baby hair
  8. Stole me a dog-eared map
  9. Called for you everywhere
  10. Have I found you
  11. Flightless bird jealous weeping
  12. Or lost you
  13. American mouth
  14. Big pill looming
  15. Now I'm a fat house cat
  16. Nursing my sore blunt tongue
  17. Watching the warm poison rats
  18. Curl through the wide fence cracks
  19. Pissing on magazine photos
  20. Those fishing lures thrown in the cold and clean
  21. Blood of Christ mountain stream
  22. Have I found you
  23. Flightless bird grounded bleeding
  24. And or lost you
  25. American mouth
  26. Big pill stuck going down
  27. Flightless Bird American Mouth - 暮光之城

歌词文件

基本操作:

  文件操作的基本顺序

  • 打开文件
  • 别写文件
  • 关闭文件 

  文件的三种打开方式:以读的模式打开(r),以写模式打开(w),以追加的模式打开(a)

  ps:这里我们得注意一下,文件以读的方式打开就不能写,以写的模式打开就不能读。

  实例一:

  

  1. f = open("filename","r",encoding="utf-8") #filename是文件名
  2. date = f.read()
  3. date = date.replace("oldfile","newfile") #oldfile是需要替换的地方,newfile是替换后的
  4. f.close()
  5.  
  6. f = open("filename","w",encoding="utf-8")
  7. f.write(date)
  8. f.close()

另一种读取文件的方式:

  

  1. import os
  2.  
  3. f = open("filename","r",encoding="utf-8")
  4. f_new = open(filename","w","encoding="utf-8")
  5.  
  6. for line in f:
  7. #print(line) #这张就可以直接读取文件所有的信息,第二行语句是为了后面替换使用的,于读取问加你无关
  8. if "oldfile" in f:
  9. line = line.replace("oldfile","newfile")
  10. f_new.write(line)
  11.  
  12. f.close()
  13. f_new.close()
  14.  
  15. os.remove("filename")
  16. os.rename("filename","new_filename")

6.字符编码的问题

因为我个人对这方面也不是特别清楚,所以就偷了懒,直接把别人的讲字符编码的博客地址给复制了过来^.^

博客地址:http://www.cnblogs.com/yuanchenqi/articles/5956943.html

这章博客可能做得有点粗糙,不过没有关系,如果有真正想学Python的朋友可以联系我

邮箱地址:yanweijian_tt@163.com

python课时二的更多相关文章

  1. Python 基础 二

    Python 基础 二 今天对昨天学习的Python基础知识进行总结,学而不思则惘,思而不学则殆! 一.先对昨天学习的三大循环的使用情况进行总结: 1.while循环的本质就是让计算机在满足某一条件的 ...

  2. 初学Python(二)——数组

    初学Python(二)——数组 初学Python,主要整理一些学习到的知识点,这次是数组. # -*- coding:utf-8 -*- list = [2.0,3.0,4.0] #计算list长度 ...

  3. Python学习二:词典基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...

  4. 有关python下二维码识别用法及识别率对比分析

    最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个模块:zbar .zbarlight.zxing. 1.三个模块的用法: #-*-coding=utf-8-*- import ...

  5. PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。

    Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...

  6. 从Scratch到Python——Python生成二维码

    # Python利用pyqrcode模块生成二维码 import pyqrcode import sys number = pyqrcode.create('从Scratch到Python--Pyth ...

  7. 用python生成二维码

    Python生成二维码,可以使用qrcode模块, github地址 我是搬运工 首先安装, 因为打算生成好再展示出来,所以用到Pillow模块 pip install qrcode pip inst ...

  8. Python 实现二维码生成和识别

    今天突然想给自己自己做个头像,然后还是二维码的形式,这样只要扫一扫就可以访问我的主页.然后就开始自己的苦逼之路... 其实实现二维码java,c#,C++等都可以实现:由于自己正在学python,所以 ...

  9. Python - 模块(二)

    目录 Python - 模块(二) re re下面的方法 logging os Python - 模块(二) re re模块提供了正则表达式的相关操作 主要字符介绍: . 通配符,除了换行符之外的任意 ...

随机推荐

  1. Ubuntu下搜狗输入法突然无法输入中文

    百度了很久的,后面看到这个帖子,找到解决办法.引用:http://blog.csdn.net/kiss_the_sky/article/details/62238529 删除配置文件,重启搜狗 ubu ...

  2. WPF之路五:wpf 隐藏与显示 Visibility

    WPF里枚举变量Visibility 有三个值:Visible, Collapsed和Hidden.其中Collapsed是WPF新引进的,其作用是不仅隐去Control,同时也会移除Control所 ...

  3. 老李分享:《Linux Shell脚本攻略》 要点(八)

    老李分享:<Linux Shell脚本攻略> 要点(八)   1.打印进程 [root@localhost program_test]# ps -e | head  PID TTY     ...

  4. MYSQL数据库导入大数据量sql文件失败的解决方案

    1.在讨论这个问题之前首先介绍一下什么是"大数据量sql文件". 导出sql文件.选择数据库-----右击选择"转储SQL文件"-----选择"结构和 ...

  5. ios坐标位置转换

    //ios常用坐标转换来处理一些下拉框队形的按钮的位置,我以最下面两个来进行一下个人的理解,不足之处多多见谅 - (CGPoint)convertPoint:(CGPoint)point toView ...

  6. Java基础学习

    1,基本类型和引用类型 基本类型就是一个盒子,数据本身就保存在盒子里面,引用类型的盒子里放的是数据的五:地址,通过这个地址来找到数据. 基本数据类型和堆中对象的引用保存在栈中,引用类型保存在堆中. 2 ...

  7. Spring Boot 学习笔记--整合Redis

    1.新建Spring Boot项目 添加spring-boot-starter-data-redis依赖 <dependency> <groupId>org.springfra ...

  8. JQuery处理DOM元素-属性操作

    JQuery处理DOM元素-属性操作 //操作元素的属性: $('*').each(function(n){ this.id = this.tagName + n; }) //获取属性值: $('') ...

  9. (转)使用string.Format需要注意的一个性能问题

    今天,我在写C#代码时,突然发现一个最熟悉的陌生人 —— string.Format.在写C#代码的日子里,与它朝夕相伴,却没有真正去了解它.只知道在字符串比较多时,用它比用加号进行字符串连接效率更高 ...

  10. Filter和Listener的应用——分IP统计网站访问次数

    一:分析 统计工作需要在所有资源执行前进行,所以需要放在filter中 这个拦截器仅仅进行统计工作,不进行拦截,所以请求必须继续传递下去 用Map<String,integer>来保存数据 ...