1.列表和元组

  列表可以对数据实现最方便的存储、修改等操作

  1. names=["Alex","tenglan","Eric","Rain","Tom","Amy"]
  2.  
  3. print(names[0])
  4. print(names[2])
  5. print(names[-1])
  6. print(names[-2])
  7.  
  8. print(names[1:4]) #取下标1到4之间,包括1,不包括4
  9. print(names[1:-1])#取下标1到-1之间,包括1,不包括-1
  10. print(names[0:3])
  11. print(names[:3]) #从头开始取,0可以省
  12. print(names[3:]) #如果想取最后一个,必须不能写-1,只能这么写
  13. print(names[3:-1])
  14. print(names[::2])#2为步数
  15. names.append("shisan") #追加
  16. print(names)
  17.  
  18. names.insert(2,"jun") #在第二个位置前插入数据
  19. print(names)
  20. names[2]="111" #修改数据
  21.  
  22. del names[2] #删除下标为2的数据
  23. #del names #删除整个列表
  24. print(names) #会报NameError: name 'names' is not defined
  25.  
  26. names2=["111","222","333"]
  27. names.extend(names2) #扩展列表
  28. print(names)
  29. names4=['Alex', 'tenglan', 'Eric', 'Rain', 'Tom', 'Amy', 'shisan',['111', '222', '333']]
  30. name_copy=names4.copy() #浅拷贝,一起修改
  31. print(name_copy)
  32. name_copy[7][2]="4444"
  33. print(name_copy,names4)
  34.  
  35. import copy
  36. names_3=copy.deepcopy(names4) #深度拷贝,只修改需要修改
  37. names_3[7][2]="5555"
  38. print(names_3,names4)
  39.  
  40. print(names.count("shisan")) #统计出现次数
  41. names4=['Alex', 'tenglan', 'Eric', 'Rain', 'Tom', 'Amy', 'shisan','111', '222', '333']
  42. names5=names4.sort()
  43. print(names5) #排序,#3.0里不同数据类型不能放在一起
  44. names6=names4.reverse() #反转
  45. print(names6,names4)

  

元组是只读列表

 3)字符串操作

 特性:不可修改

  1. name="shi love yyyy"
  2. print(name.capitalize()) #首字母大写
  3. print(name.casefold()) #大写全变不写
  4. print(name.center(50,"-"))
  5. print(name.count("y")) #统计y出现的次数
  6. print(name.encode()) #将字符串编码转成bytes格式
  7. print(name.endswith("y"))#判断字符串是否y结尾
  8. print(name.index("l"))#查找l,找不到返回-1
  9.  
  10. name2="shi love {name}"
  11. print(name2.format(name="22"))
  12. print(name2.index("s")) #返回s的下标
  13. print("9aA".isalnum()) # 是否数字和字母
  14. print("9".isdigit()) #是否为数字
  15.  
  16. intab="shi"
  17. outtab="123"
  18. print(name2.maketrans(intab,outtab)) #可以用来加密解密
  19. print(name2.swapcase()) #大小写互换
  20. print(name2.ljust(40,"-"))
  21. print(name2.rjust(40,"-"))

4)字典

  特性1)无序,key必须唯一,天生去重

  1. info = {
  2. 'stu1101': "TengLan Wu",
  3. 'stu1102': "LongZe Luola",
  4. 'stu1103': "XiaoZe Maliya",
  5. }
  6.  
  7. print(info)
  8.  
  9. info["stu1104"]="shisan"
  10. info["stu1103"]="jun "
  11. print(info) #无则添加,有则修改
  12.  
  13. del info["stu1104"]
  14. print(info)
  15.  
  16. info.popitem()
  17. print(info)
  18.  
  19. print("stu1102" in info) #判断是否存在
  20. print(info.get("stu1102")) #获取value
  21.  
  22. av_catalog = {
  23. "欧美":{
  24. "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
  25. "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
  26. "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
  27. "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
  28. },
  29. "日韩":{
  30. "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
  31. },
  32. "大陆":{
  33. "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
  34. }
  35. }
  36.  
  37. av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来"
  38. print(av_catalog["大陆"]["1024"])
  39.  
  40. print(info.values()) #获取所有的valus
  41. b = {1:2,3:4, "stu1102":"龙泽萝拉"}
  42. info.setdefault() #如是不存在,就用默认值
  43. info.update(b)
  44. print(info)

5)集合

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

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集等关系
    1. s=set(["3","5","9","10"]) #创建一个数值集合
    2. t=set("hello") #创建一个唯一字符集合
    3. print(s)
    4. a=t|s #并集
    5. a2=t.union(s)#并集
    6. print(a,a2)
    7.  
    8. b=t&s #交集
    9. b2=t.intersection(s)
    10.  
    11. print(b,b2)
    12. c=t-s #差集
    13. c2=t.difference(s)
    14.  
    15. print(c,c2)
    16.  
    17. d=t^s #对称差集
    18. d2=t.symmetric_difference(s)
    19.  
    20. print(d,d2)
    21. t.add('x')
    22. print(t)
    23.  
    24. t.update([10,37,42])
    25. print(t)
    26.  
    27. t.remove("x")
    28. print(t)
    29. print(len(t))
    30. print('x' in t)
    31.  
    32. print(s.issubset(t)) #s是否t的子集
    33. print(s.issuperset()) #s是否是t的父集

    6) 文件操作

    对文件操作流程

    1. 打开文件,得到文件句柄并赋值给一个变量
    2. 通过句柄对文件进行操作
    3. 关闭文件
    4. with 避免打开文件后忘记关闭
    5. 打开文件的模式有:

      • r,只读模式(默认)。
      • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
      • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

      "+" 表示可以同时读写某个文件

      • r+,可读写文件。【可读;可写;可追加】
      • w+,写读
      • a+,同a

      "U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

      • rU
      • r+U

      "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

      • rb
      • wb
      • ab
    1. data=open("yes").read()
    2. print(data)
    3.  
    4. f=open("yes",'r')
    5. #for index,line in enumerate(f.readlines()):
    6. # print(index,line.strip( ))
    7.  
    8. count=0
    9. for line in f: #一行行读
    10. if count==1:
    11. print(line)
    12. count+=1
    13.  
    14. f=open("no",'r',encoding="utf-8")
    15. print(f.tell())
    16. f.readline()
    17. print(f.tell())
    18. f.seek(0)
    19. print(f.tell())
    20. print(f.encoding)
    21. print(f.fileno())
    22.  
    23. import sys,time
    24. for i in range(20):
    25. sys.stdout.write("#")
    26. sys.stdout.flush()
    27. time.sleep(0.1)

     7. 字符编码

  • 需知:

    1.在python2默认编码是ASCII, python3里默认是unicode

    2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间

    3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string

    python2

    py2里默认编码是ascii
    文件开头那个编码声明是告诉解释这个代码的程序 以什么编码格式 把这段代码读入到内存,因为到了内存里,这段代码其实是以bytes二进制格式存的,不过即使是2进制流,也可以按不同的编码格式转成2进制流,你懂么?
    如果在文件头声明了#_*_coding:utf-8*_,就可以写中文了, 不声明的话,python在处理这段代码时按ascii,显然会出错, 加了这个声明后,里面的代码就全是utf-8格式了
    在有#_*_coding:utf-8*_的情况下,你在声明变量如果写成name=u"大保健",那这个字符就是unicode格式,不加这个u,那你声明的字符串就是utf-8格式
    utf-8 to gbk怎么转,utf8先decode成unicode,再encode成gbk
    python3

    py3里默认文件编码就是utf-8,所以可以直接写中文,也不需要文件头声明编码了,干的漂亮
    你声明的变量默认是unicode编码,不是utf-8, 因为默认即是unicode了(不像在py2里,你想直接声明成unicode还得在变量前加个u), 此时你想转成gbk的话,直接your_str.encode("gbk")即可以
    但py3里,你在your_str.encode("gbk")时,感觉好像还加了一个动作,就是就是encode的数据变成了bytes里,我擦,这是怎么个情况,因为在py3里,str and bytes做了明确的区分,你可以理解为bytes就是2进制流,你会说,我看到的不是010101这样的2进制呀, 那是因为python为了让你能对数据进行操作而在内存级别又帮你做了一层封装,否则让你直接看到一堆2进制,你能看出哪个字符对应哪段2进制么?什么?自己换算,得了吧,你连超过2位数的数字加减运算都费劲,还还是省省心吧。  
    那你说,在py2里好像也有bytes呀,是的,不过py2里的bytes只是对str做了个别名(python2里的str就是bytes, py3里的str是unicode),没有像py3一样给你显示的多出来一层封装,但其实其内部还是封装了的。 这么讲吧, 无论是2还是三, 从硬盘到内存,数据格式都是 010101二进制到-->b'\xe4\xbd\xa0\xe5\xa5\xbd' bytes类型-->按照指定编码转成你能看懂的文字

python基础-列表元组字典的更多相关文章

  1. python中列表 元组 字典 集合的区别

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...

  2. **python中列表 元组 字典 集合

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...

  3. Python之列表&元组&字典

    今天学习了Python的基本数据类型,做以下笔记,以备查用. 一.列表 列表的常用方法: 1.append()方法 def append(self, p_object): # real signatu ...

  4. Python学习-列表元组字典操作

    一.列表 列表是Python的基本数据类型之一,它是以 [] 括起来的,内部成员用逗号隔开.里面可以存放各种数据类型. # 例如: list2 = ['jason', 2, (1, 3), ['war ...

  5. python字符串/列表/元组/字典之间的相互转换(5)

    一.字符串str与列表list 1.字符串转列表 字符串转为列表list,可以使用str.split()方法,split方法是在字符串中对指定字符进行切片,并返回一个列表,示例代码如下: # !usr ...

  6. python 中列表 元组 字典 集合的区别

    先看图片解释 (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复 ...

  7. python字符串 列表 元组 字典相关操作函数总结

    1.字符串操作函数 find 在字符串中查找子串,找到首次出现的位置,返回下标,找不到返回-1 rfind 从右边查找 join 连接字符串数组 replace 用指定内容替换指定内容,可以指定次数 ...

  8. python3速查参考- python基础 4 -> 元组 + 字典 + 字符串 的学习

    元组 元组:特点就是内容不可变,算只读的列表,可以被查询,不能被修改 a = 2, print(a) print(type(a)) b = ('a','b','c') print(b[1]) 运行结果 ...

  9. 【python】列表&&元组&&字典

    列表:用“[]”包裹,可对值增删改. 列表遍历: 方法一: alist=["a","b","c","d","e ...

随机推荐

  1. [转帖]Edge投降Chromium!微软王牌浏览器是如何跪倒的

    Edge投降Chromium!微软王牌浏览器是如何跪倒的   https://tech.sina.com.cn/n/k/2018-12-17/doc-ihmutuec9824604.shtml   谷 ...

  2. PHP仿LED点阵,读取字库文字,并转化为二进制输出

    <?php $xml=simplexml_load_file("zimu.xml");//导入XML文件,从XML文件里知道需要提取的字体的信息 $font_height=$ ...

  3. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 1. 神秘朋友

    Python (Windows 下) 自带了一个非常有趣的 海龟绘图程序 (turtle),它是本系列课程的主角. 在 PyCharm 中,新建一个项目,然后在代码编辑器中输入 import turt ...

  4. Java线程池停止空闲线程是否有规则呢?

    Java线程池中线程的数量超过核心线程的数量,且所有线程空闲,空闲时间超过keepAliveTime,会停止超过核心线程数量的线程,那么会保留哪些线程呢?是不是有规则呢? 测试代码: ThreadPo ...

  5. 【题解】 [HNOI2004]宠物收养场(Splay)

    懒得复制,戳我戳我 Solution: \(Splay\)板子,注意交换的地方,然后就是注意不要越界node[x],应该是\(node[now]\),其次就是数组可以开大点 Code: //It is ...

  6. 学习3__STM32--DMA传输模式---

    DMA传输模式 记录 2018-01-26 开始小记 > mode1: Peripheral to Memory 说明: 工程实现的云盘链接 > mode2: Memory to Peri ...

  7. 【洛谷P1491】集合位置

    题目大意:求给定的一张无向带权图的次短路. 题解:先跑一遍 spfa 求出从起点到终点的最短路,记录路径.接着枚举删边,并重新跑 spfa,统计最小值即可. 至于为什么 dp 做法不行,暂时还不清楚. ...

  8. Linux上设置开机启动Java程序

    在Linux上设置开机启动Java程序,例如:test.jar 在Linux上启动Java程序的命令: nohup java -jar test.jar >/dev/>& & ...

  9. Kafka+Zookeeper+Filebeat+ELK 搭建日志收集系统

    ELK ELK目前主流的一种日志系统,过多的就不多介绍了 Filebeat收集日志,将收集的日志输出到kafka,避免网络问题丢失信息 kafka接收到日志消息后直接消费到Logstash Logst ...

  10. 改变 小程序 select 多选框 选中图片

    https://www.jianshu.com/p/11eb5b0bfe1a 注意 博客介绍的  在 wxss  backgroung-image 中引入小程序内图片是不可的,传到cdn上才实现