Python基础数据类型-列表(list)和元组(tuple)和集合(set)

                                        作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

    本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版本的哟,请知晓。

一.列表的定义与查询

  1. #!/usr/bin/env python
  2. #_*_coding:utf-8_*_
  3. #@author :yinzhengjie
  4. #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
  5. #EMAIL:y1053419035@qq.com
  6.  
  7. NameList = ["尹正杰","林纳斯·托瓦兹(Linus Benedict Torvalds)","拉里·埃里森(Larry Ellison)","萨提亚·纳德拉(Satya Nadella)","蒂姆·库克(Tim Cook)"]
  8. RunningMan = ["赵薇","林心如","苏有朋","林志颖"]
  9. for Star in RunningMan:
  10. print(Star)       #逐个打印列表的每个值
  11.  
  12. print(RunningMan[0:-1:2])       #其效果等效于“print(RunningMan[::2]) ”,表示从第一个到最后一个只取前2个。
  13. print(RunningMan[::2])       #步长是2,空一格打印一个
  14. print(RunningMan[:])       #如果省略了数字就默认以0开头以-1结尾(即从头到尾的打印)
  15.  
  16. print(NameList) #取值整个列表
  17. print(NameList.index("尹正杰"))  #查找出列表中的某个值所对应的索引ID
  18. print(NameList[0]) #根据列表中的索引ID返回所对应的值
  19. print(NameList[0],NameList[3]) #取出第一个索引和第四个索引
  20. print(NameList[1:3]) #从第二个索引开始取值,到第三个结束,该切片是顾头不顾尾
  21. print(NameList[-1]) #取切片取值最后一个值,即倒着取
  22. print(NameList[-3:-1]) #从倒数第三个开始取值,取到最后一个值。该切片也是顾头不顾尾哟
  23. print(NameList[-3:]) #从倒数第三个数值开始取值,取到最后一个结束
  24.  
  25. #以上代码执行结果如下:
  26. 赵薇
  27. 林心如
  28. 苏有朋
  29. 林志颖
  30. ['赵薇', '苏有朋']
  31. ['赵薇', '苏有朋']
  32. ['赵薇', '林心如', '苏有朋', '林志颖']
  33. ['尹正杰', '林纳斯·托瓦兹(Linus Benedict Torvalds)', '拉里·埃里森(Larry Ellison)', '萨提亚·纳德拉(Satya Nadella)', '蒂姆·库克(Tim Cook)']
  34. 0
  35. 尹正杰
  36. 尹正杰 萨提亚·纳德拉(Satya Nadella)
  37. ['林纳斯·托瓦兹(Linus Benedict Torvalds)', '拉里·埃里森(Larry Ellison)']
  38. 蒂姆·库克(Tim Cook)
  39. ['拉里·埃里森(Larry Ellison)', '萨提亚·纳德拉(Satya Nadella)']
  40. ['拉里·埃里森(Larry Ellison)', '萨提亚·纳德拉(Satya Nadella)', '蒂姆·库克(Tim Cook)']

二.列表的基本使用

  1. #!/usr/bin/env python
  2. #_*_coding:utf-8_*_
  3. #@author :yinzhengjie
  4. #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
  5. #EMAIL:y1053419035@qq.com
  6.  
  7. NameList = ["尹正杰","林纳斯·托瓦兹(Linus Benedict Torvalds)","拉里·埃里森(Larry Ellison)","萨提亚·纳德拉(Satya Nadella)","蒂姆·库克(Tim Cook)"]
  8. print(NameList)
  9. NameList.append("邓紫棋(Gloria Tang Tsz-Kei)")     #追加一个新的值,也就是插入末尾
  10. print(NameList)
  11. NameList.insert(1,"周杰伦(Jay Chou)")    #在列表的第一个索引处插入一个新的值,前面的数字表示索引的位置,后面是对应该索引的值
  12. print(NameList)
  13. NameList.remove("拉里·埃里森(Larry Ellison)")     #删除元素为“拉里·埃里森(Larry Ellison)”的值
  14. print(NameList)
  15. del NameList[1] #删除列表中第二个索引所对应的值
  16. print(NameList)
  17. NameList.pop(1) #删除第二个索引的值
  18. print(NameList)
  19. NameList.pop() #如果不加数字,默认删除最后一个数值
  20. print(NameList)
  21. NameList.clear() #清空列表
  22.  
  23. if len(NameList):
  24. print(NameList)
  25. else:
  26. print("SingerList为空!")
  27.  
  28. #以上代码执行结果如下:
  29. ['尹正杰', '林纳斯·托瓦兹(Linus Benedict Torvalds)', '拉里·埃里森(Larry Ellison)', '萨提亚·纳德拉(Satya Nadella)', '蒂姆·库克(Tim Cook)']
  30. ['尹正杰', '林纳斯·托瓦兹(Linus Benedict Torvalds)', '拉里·埃里森(Larry Ellison)', '萨提亚·纳德拉(Satya Nadella)', '蒂姆·库克(Tim Cook)', '邓紫棋(Gloria Tang Tsz-Kei)']
  31. ['尹正杰', '周杰伦(Jay Chou)', '林纳斯·托瓦兹(Linus Benedict Torvalds)', '拉里·埃里森(Larry Ellison)', '萨提亚·纳德拉(Satya Nadella)', '蒂姆·库克(Tim Cook)', '邓紫棋(Gloria Tang Tsz-Kei)']
  32. ['尹正杰', '周杰伦(Jay Chou)', '林纳斯·托瓦兹(Linus Benedict Torvalds)', '萨提亚·纳德拉(Satya Nadella)', '蒂姆·库克(Tim Cook)', '邓紫棋(Gloria Tang Tsz-Kei)']
  33. ['尹正杰', '林纳斯·托瓦兹(Linus Benedict Torvalds)', '萨提亚·纳德拉(Satya Nadella)', '蒂姆·库克(Tim Cook)', '邓紫棋(Gloria Tang Tsz-Kei)']
  34. ['尹正杰', '萨提亚·纳德拉(Satya Nadella)', '蒂姆·库克(Tim Cook)', '邓紫棋(Gloria Tang Tsz-Kei)']
  35. ['尹正杰', '萨提亚·纳德拉(Satya Nadella)', '蒂姆·库克(Tim Cook)']
  36. SingerList为空!

三.列表的高级操作

  1. #!/usr/bin/env python
  2. #_*_coding:utf-8_*_
  3. #@author :yinzhengjie
  4. #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
  5. #EMAIL:y1053419035@qq.com
  6.  
  7. import copy
  8.  
  9. NameList = ["yinzhengjie","Linus Benedict Torvalds","Larry Ellison","Satya Nadella","Tim Cook"]
  10. SingerList = ["Jay Chou","Gloria Tang Tsz-Kei","Jolin Tsai",["陈伟霆","刘诗诗","鹿晗"]]
  11.  
  12. print(NameList)
  13. NameList.reverse() #反转列表,就是讲列表的初始顺序调换一下
  14. print(NameList)
  15. NameList.sort() #自动按照accsis编码排序,特殊字符会优先排序
  16. print(NameList)
  17. NameList.extend(SingerList) #扩展列表。可以将其他的列表追加到该列表来
  18. print(NameList)
  19. SingerListShallowCopy = SingerList.copy() #浅拷贝,只拷贝第一层的(即第一层的变量不包括子列表会被独立的开辟一块内存地址),如果列表里面镶嵌了子列表,那么第二层的列表里面的所有数值都会当成一个内存地址(即2个列表共用的同一个内存地址,都把内存指针指向了这个内存地址)
  20. print("修改列表SingerList之前:",SingerList)
  21. SingerList[0] = "周杰伦"
  22. SingerList[3][0] = "William Chan"
  23. print("修改列表SingerList之后:",SingerList)
  24. print(SingerListShallowCopy) #我们会发现浅拷贝修改时,当源列表
  25. SingerListDeepCopy = copy.deepcopy(SingerList) #导入copy模块,用这个模块的深度复制已达到完全的拷贝
  26. SingerList[0] = "Leehom Wang"
  27. SingerList[3][1] = "鞠婧祎"
  28. print(SingerList)
  29. print(SingerListDeepCopy)
  30. print("删除SingerList列表之前:",'SingerList' in locals().keys())
  31. del SingerList #删除列表
  32. print("删除SingerList列表之后:",'SingerList' in locals().keys())
  33.  
  34. p1 = copy.copy(SingerListDeepCopy) #浅拷贝的方式
  35. p2 = SingerListDeepCopy[:]
  36. p3 = list(SingerListDeepCopy)
  37. print(p1)
  38. print(p2)
  39. print(p3)
  40.  
  41. p1[3][0] = 'yinzhengjie'
  42. p2[3][0] = 'yzj'
  43. p3[3][0] = "尹正杰"
  44. SingerListDeepCopy[3][0] = 'AAA' #你会发现前面3中修改方式都不对哟!
  45. print(SingerListDeepCopy)
  46. print(p1)
  47. print(p2)
  48. print(p3)

四.元组的使用

  元组是一种特殊的列表,他是不可变类型的,如果元组内部嵌套其他数据类型,如列表或者字典等等,则该索引下标(假如该下标的元素是一个列表,则该元素就拥有列表的所有特性,即这个元素列表的内部数据是可以实现增删改查的)的元素遵循它本有的属性。

  1. #!/usr/bin/env python
  2. #_*_coding:utf-8_*_
  3. #@author :yinzhengjie
  4. #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
  5. #EMAIL:y1053419035@qq.com
  6.  
  7. NameList = ("yinzhengjie","Linus Benedict Torvalds","yinzhengjie",) #定义一个元组(注意:,当元组里面的元素只有一个时,最好在后面加上一个逗号(","),不然Python不会认为它是一个元组哟,所以养成良好的习惯吧,我们以后可以在写的元组后面都加逗号),元组支持的方法列表都支持而且元组仅仅支持2种方法。
  8.  
  9. print(NameList.count("yinzhengjie")) #统计alex字符串在该列表出现的次数。
  10.  
  11. print(NameList.index("yinzhengjie")) #超照列表中的某个值所对应的索引ID,这个ID会和第一项匹配,如果出现了就直接匹配出来不会继续往下查找了.
  12.  
  13. #以上代码执行结果如下:
  14. 2
  15. 0

五.集合的应用

  其实集合也是一种特殊的列表,唯一不同的是,在集合中的每一个元素不允许重复而在列表里面是允许重复的。欢聚话说,将一个列表去重的列表就可以写成一个集合。当然集合是可变类型的,而我们上面说的元组是不可变类型的哟。集合和字典一样都是无序的,因此他们都没有索引下标。

  1. #!/usr/bin/env python
  2. #_*_coding:utf-8_*_
  3. #@author :yinzhengjie
  4. #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
  5. #EMAIL:y1053419035@qq.com
  6.  
  7. name = {"yinzhengjie","yzj"}           #定义一个集合,注意是大括号哟!如果你写的元素有重复,它会自动给你去重的!
  8. name2 = {"尹正杰","yinzhengjie"}
  9. name.add("Linus")         #向集合追加一个元素,如果元素存在,则不做任何修改。其实方法和列表用法几乎一致,参考列表的用法即可。
  10. print(name)
  11. name.discard("yinzhengjie")     #这个函数是指定移除的集合元素
  12. print(name)
  13. name.update({"Larry Ellison","yinzhengjie",(1,2,3)}) #这个方法你可以理解为add的补充,它可以批量添加多个元素进去。集合可以嵌套元组,不能嵌套列表或是字典,更不能嵌套集合,如果你非要去嵌套一个,会抛错:“TypeError: unhashable type ...”
  14. print(name)
  15.  
  16. v1 = name.difference(name2)         #比较name和name2,将name中存在的元素而name2中不存在的元素赋值给v1。
  17. print(v1)
  18. # name.difference_update(name2)         #它拥有difference的功能,只不过他多了一个操作,就是将difference得到的结果重新赋值给name,当然在此之前得清空name原有的数据。以下包含“*._update”的函数都有这个哟!
  19. # print(name)
  20.  
  21. v2 = name.symmetric_difference(name2)           #这里是取对称差集,就是讲name和name2中相互不存在的元素取出来赋值给v2。
  22. print(v2)
  23.  
  24. v3 = name.intersection(name2)           #这里是取两个集合(name和name2)的交集赋值给v3。
  25. print(v3)
  26.  
  27. v4 = name.union(name2)           #这里是取两个集合的并集。
  28. print(v4)
  29.  
  30. for i in name :           #注意,集合是没有索引的,但是可以做for循环哟!
  31. print(i)
  32.  
  33. #以上代码执行结果如下:
  34. {'Linus', 'yzj', 'yinzhengjie'}
  35. {'Linus', 'yzj'}
  36. {'Linus', (1, 2, 3), 'Larry Ellison', 'yinzhengjie', 'yzj'}
  37. {'Linus', 'Larry Ellison', 'yzj', (1, 2, 3)}
  38. {'尹正杰', 'Linus', 'yzj', (1, 2, 3), 'Larry Ellison'}
  39. {'yinzhengjie'}
  40. {'尹正杰', 'Linus', (1, 2, 3), 'Larry Ellison', 'yinzhengjie', 'yzj'}
  41. Linus
  42. (1, 2, 3)
  43. Larry Ellison
  44. yinzhengjie
  45. yzj

Python基础数据类型-列表(list)和元组(tuple)和集合(set)的更多相关文章

  1. python基础数据类型--列表(list)

    python基础数据类型--列表(list) 列表是我们在后面经常用到的数据类型之一,通过列表可以对数据类型进行增.删.改.查等操作 一列表的增.删.改.查 1增: 1.1增加到最后   append ...

  2. Day2 - Python基础2 列表、字符串、字典、集合、文件、字符编码

    本节内容 列表.元组操作 数字操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 ...

  3. python基础之列表list元组tuple

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7041763.html python基础之列表list元组tuple 列表li ...

  4. python基础数据类型--元组(tuple)

    python基础数据类型--元组(tuple) 一.元组的定义和特性 定义:与列表相似,只不过就是将[ ] 改成 ( ) 特性:1.可以存放多个值 2.不可变 3.按照从左到右的顺序定义元组元素,下标 ...

  5. python基础4 列表和元组

    一. 列表列表:python基础数据类型之一:其他语言中也有列表的概念,js 数组,可索引,可切片,可加步长li = ['hello', 100, True, [1, 2, 3], {'name':' ...

  6. Python基本数据类型--列表、元组、字典、集合

    一.Python基本数据类型--列表(List) 1.定义:[ ]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素. 2.列表的创建: # 方式一 list1 = ['name','ag ...

  7. Python 入门之Python基础数据类型及其方法

    Python 入门之Python基础数据类型 1. 整型:int 用于计算,用于比较 (在赋值的时候先执行等号右边的内容) 1.1 整数的加 a = 10 b = 20 print(a + b) 结果 ...

  8. 图解python | 基础数据类型

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...

  9. python基础数据类型1

    python基础数据类型1 part1: ''' ''': 三个单引号用于换行的字符串 字符串可以相加(拼接)相乘(重复) 在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代 ...

随机推荐

  1. Beta版会议总结

    开会时间:2015年06月12日 开会地点:基教601 开会人员:李想,王颖瑞,朱少辉,陈晨,侯涛亮. 开会内容:对于6月10日,大一同学的投票情况进行讨论和反思. 讨论结果如下: 一.目前存在的问题 ...

  2. 使用Junit进行单元测试

    使用Junit进行单元测试 一.目的和要求 JUnit是一款由Erich Gamma(<设计模式>的作者)和Kent Beck(极限编程的提出者)编写的开源的回归测试框架,供Java编码人 ...

  3. 01springboot快速入门

    SpringBoot快速入门 springboot的宗旨是习惯大于配置,所以spring里面大量使用了默认的配置来简化spring的配置.spring Boot的主要优点: 为所有Spring开发者更 ...

  4. JVM EXCEPTION_ACCESS_VIOLATION

    ## A fatal error has been detected by the Java Runtime Environment:## EXCEPTION_ACCESS_VIOLATION (0x ...

  5. js返回值 数组去重

    function myfun(arr){ var arr1 = new Array(); var len = arr.length; ;i <len ;i++){ ) { arr1.push(a ...

  6. 删除Mac上的mysql数据库

    sudo rm /usr/local/mysqlsudo rm -rf /usr/local/mysql*sudo rm -rf /Library/StartupItems/MySQLCOMsudo ...

  7. sort和uniq的应用实例

    sort 排序 uniq 1.语法:sort [option]... [file]... 2.选项:-k key,关键子,指定以那个列来排序.如果不指定,默认将正行作为关键字排序-n 对数值排序.默认 ...

  8. LinkedList 实现 Queue

    package cn.com.example; import java.util.LinkedList; /** * Created by Jack on 2017/3/8. */ public cl ...

  9. appium学习记录2

    unittest 学习 每执行一次 testcase 就会调用一次 setUP 与teardown 类方法只会执行一次 开始 与结束时候执行 类似反射方法 __init__ 与 __del__ set ...

  10. cxf Webservice 使用httpClient 调用

    package com.wistron.wh.swpc.portal.uitl; import java.io.BufferedInputStream;import java.io.File;impo ...