列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或 所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。 鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如names)是个不错的主意。

列表非常适合利用顺序和位置定位某一元素,尤其是当元素的顺序或内容经常发生改变时。与字符串不同,列表是可变的。你可以直接对原始列表进行修改:添加新元素、删除 或覆盖已有元素。在列表中,具有相同值的元素允许出现多次。

1.1常用列表方法

  1. #使用 dir(list) ,查看列表的内置方法:
    >>> dir(list)
  2. ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

1.1.1 append

  1. #向列表末尾追加一个元素
  2. >>> numbers = [1,2,2,3,3,3]
  3. >>> numbers.append(4)
  4. >>> numbers
  5. [1, 2, 2, 3, 3, 3, 4]

1.1.2 clear

  1. #清除一个列表中的所有元素
  2. >>> n
  3. [1, 2, 3, 4, 5]
  4.  
  5. >>> n.clear()
  6.  
  7. >>> n
  8. []

1.1.3 copy

  1. #复制一个列表
  2. >>> n = [1,2,3,4,5]
  3.  
  4. >>> n.copy()
  5. [1, 2, 3, 4, 5]
  6.  
  7. >>> n.copy()
  8. [1, 2, 3, 4, 5]
  9.  
  10. >>> num = n.copy()
  11.  
  12. >>> num
  13. [1, 2, 3, 4, 5]

1.1.4 count

  1. #计算某个元素在列表中出现的次数
  2. >>> numbers
  3. [1, 2, 2, 3, 3, 3, 4]
  4. >>> numbers.count(1)
  5. 1
  6. >>> numbers.count(2)
  7. 2
  8. >>> numbers.count(3)
  9. 3
  10. >>> numbers.count(4)
  11. 1

1.1.5 extend

  1. #直接向列表末尾一次性追加另一个列表
  2. >>> numbers
  3. [1, 2, 2, 3, 3, 3, 4]
  4. >>> a = [4,4,4]
  5. >>> numbers.extend(a)
  6. >>> numbers
  7. [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
  8. >>> a
  9. [4, 4, 4]

1.1.6 insert

  1. #将对象插入列表中
  2. >>> numbers
  3. [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
  4. >>> numbers.insert(0,0)
  5. >>> numbers
  6. [0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4]

1.1.7 pop

  1. #移除列表中的最后一个元素,默认是最后一个
  2. >>> numbers
  3. [0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
  4. >>> numbers.pop()
  5. 4
  6. >>> numbers
  7. [0, 1, 2, 2, 3, 3, 3, 4, 4, 4]

1.1.8 remove

  1. #默认移除列表中第一个匹配的元素
  2. >>> num
  3. [1, 2, 1, 3, 2]
  4. >>> num.remove(1)
  5. >>> num
  6. [2, 1, 3, 2]
  7. >>> num.remove(2)
  8. >>> num
  9. [1, 3, 2]

1.1.9 reverse

  1. #将列表中的元素反向存放
  2. >>> numbers
  3. [0, 1, 2, 2, 3, 3, 3, 4, 4, 4]
  4. >>> numbers.reverse()
  5. >>> numbers
  6. [4, 4, 4, 3, 3, 3, 2, 2, 1, 0]

1.1.10 sort

  1. #########################################################
  2. #对列表排序,这个我比较喜欢,里面挺多好玩的东西,下面做个简单的介绍#
  3. #########################################################

  4. #默认排序
  5. >>> L = [1,4,3,2]
  6. >>> L.sort()
  7. >>> L
  8. [1, 2, 3, 4]
  9.  
  10. #自定义排序
  11. #咱们先看看sort的使用方法
  12. >>> L.sort.__doc__
  13. 'L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*'
  14.  
  15. #根据提供的key函数为元素产生一个键,列表的元素按照这个键值来排序
  16. >>> x = ['abc','a','bc','abcd']
  17. >>> x.sort(key=len)
  18. >>> x
  19. ['a', 'bc', 'abc', 'abcd’]
  20.  
  21. #反向排序
  22. >>> n = [3, 1, 2, 5]
  23. >>> n.sort(reverse=True)
  24. >>> n
  25. [5, 3, 2, 1]

1.2 其他的几个方法

1.2.1 in

  1. #使用 in 判断值是否存在
  2. #判断一个值是否存在于给定的列表中的许多方式,其中最具有 Python 风格的是使用 in:
  3. >>> num = [1, 2, 3]
  4. >>> 1 in num
  5. True
  6. >>> 5 in num
  7. False
  8. >>>
  9.  
  10. #同一个值可能出现在列表的多个位置,但只要至少出现一次,in就会返回Ture
  11. >>> num = [1, 1, 2, 3]
  12. >>> 1 in num
  13. True

1.2.2 len()

  1. #使用 len()获取长度
  2. #len()可以返回列表长度
  3. >>> num = [1, 2, 3]
  4. >>> len(num)
  5. 3
  6.  
  7. #对于汉字呢?是如何计算长度呢?
  8. >>> num = "菜鹌鹑2333"
  9. >>> len(num)
  10. 7
  11. #so,你get到了吗?

1.2.3  “=” 和 “copy()”有啥不一样呢?

  1. # “=” 是赋值 copy()是复制
  2. #这个相信大家都知道,但是到底还有啥区别呢?往下看
  3. >>> a = [1, 2, 3]
  4. >>> a
  5. [1, 2, 3]
  6. >>> b = a
  7. >>> b
  8. [1, 2, 3]
  9. >>> a[0] = '菜鹌鹑'
  10. >>> a
  11. ['菜鹌鹑', 2, 3]
  12. >>> b
  13. ['菜鹌鹑', 2, 3]
  14. #和软链接有点像哦,让我们看看他们的内存地址:
  15. >>> hex(id(a))
  16. '0x1a93262c588'
  17. >>>
  18. >>> hex(id(b))
  19. '0x1a93262c588'
  20. #我们发现,两个变量指向同一个对象。
  21.  
  22. #咱们再看看copy()
  23. >>> c = a.copy()
  24. >>> a
  25. [1, 2, 3]
  26. >>> c
  27. [1, 2, 3]
  28. >>> a[0] = '菜鹌鹑'
  29. >>> c
  30. [1, 2, 3]
  31. #没办法改变c列表了,再看看他们的内存地址
  32. >>> hex(id(a))
  33. '0x1a93262c588'
  34. >>> hex(id(c))
  35. '0x1a93262ce08'
  36. #原来copy()生成了新的列表,已经指向两个不同的对象。
  37.  
  38. #除了copy(),还有其他方法生成新列表
  39. ########
  40. #list()#
  41. ########
  42. >>> a = [1,2,3]
  43. >>> b = list(a)
  44. >>> b
  45. [1, 2, 3]
  46. >>> hex(id(a))
  47. '0x2e78957c588'
  48. >>> hex(id(b))
  49. '0x2e78957cfc8'
  50. #########
  51. #列表切片#
  52. #########
  53. >>> a = [1,2,3]
  54. >>> c = a[:]
  55. >>> c
  56. [1, 2, 3]
  57. >>> hex(id(c))
  58. '0x2e78957c588'
  59. >>> hex(id(a))
  60. '0x2e78957ce08'

Python_Day1_人人都爱列表的更多相关文章

  1. Head First Python之人人都爱列表(1-初识Python)

    IDLE 内置函数==BIF==built-in function 默认地,内置函数都是紫色,字符串是绿色,关键字是橙色. tab:自动补全 Alt-P:前一个 Alt-N:下一个 列表的特性 列表看 ...

  2. Python学习笔记1——人人都爱列表

    一些BIF函数在列表中的应用: Python 3.3.4 (v3.3.4:7ff62415e426, Feb 10 2014, 18:13:51) [MSC v.1600 64 bit (AMD64) ...

  3. 【head first python】1.初识python 人人都爱列表

    #coding:utf-8 #创建简单的python列表 movies = ["The Holy Grail", "The Life of Brain", &q ...

  4. NoSQL初探之人人都爱Redis:(2)Redis API与常用数据类型简介

    一.Redis API For .Net 首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些第三方的开源类库.目前最流行的就是Se ...

  5. 【转】NoSQL初探之人人都爱Redis:(2)Redis API与常用数据类型简介

    一.Redis API For .Net 首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些第三方的开源类库.目前最流行的就是Se ...

  6. NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装

    一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经 ...

  7. NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例

    一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象.消息被发送到队列中,“消息队列”是在消息的传输过程中保存消息的容器 ...

  8. NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索

    一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...

  9. 【转】 NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索

    一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...

随机推荐

  1. web的seo

    摘要:搜索引擎优化是一种具有很高技术性的活动,也是一种营销功能,必须将它作为营销活动处理.SEO从业者必须理解公司的服务.产品.总体业务战略.竞争形势.品牌.未来网站开发目标和相关的业务构成. SEO ...

  2. java多线程之wait和notify

    多线程中的通信是非常重要的概念,线程直接实现通信就可以并发完成很多复杂工作. java在Object类中就设计了wait()和notify()两个方法,以解决这个问题. 1.释义: wait()方法将 ...

  3. github 上传更新代码(最简单的方法)

    1.首先你需要一个github账号,还没有的朋友先去注册一个吧! GitHub地址:https://github.com/ 我们使用git需要先安装git工具,这里给出下载地址,下载后一路直接安装即可 ...

  4. 前后端开发(2):浏览器与PHP程序的交互

    上一节介绍怎么在mac电脑上启用PHP程序,并且演示了一个简单的例子,这个例子运行时,涉及了浏览器.apache以及PHP程序的交互,这三者的关系大概是这样的: 一般来说,浏览器(或者类似功能的程序) ...

  5. JVM(七):JVM内存结构

    JVM(七):JVM内存结构 在前几节的文章我们多次讲到 Class 对象需要分配入 JVM 内存,并在 JVM 内存中执行 Java 代码,完成对象内存的分配.执行.回收等操作,因此,如今让我们来走 ...

  6. java的equals与==的区别

    看了网上关于equal与==的区别,感觉很多有些片面,不仔细,这里我来说说我对equal与==的理解 首先要了解基本类型与引用类型 1.int,char,boolean之类的就是基本类型,我们只要使用 ...

  7. 关于Jvm类加载机制,这一篇就够了

    前言 一个月没更新了,这个月发生了太多的事情,导致更新的频率大大降低,不管怎样收拾心情,技术的研究不能落下! jvm作为每个java程序猿必须了解的知识,博主推荐一本书<深入理解Java虚拟机& ...

  8. 微服务网关 Spring Cloud Gateway

    1.  为什么是Spring Cloud Gateway 一句话,Spring Cloud已经放弃Netflix Zuul了.现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是 ...

  9. 模型model

    django的ORM系统 ORM概念:对象关系映射(Object Relational Mapping,简称ORM)ORM的优势:不用直接编写SQL代码,只需像操作对象一样从数据库操作数据. 模型类必 ...

  10. visual studio code emmet 插件不提示?解决方案

    使用visual studio code编辑.vue文件时,emmet插件无法使用, 可以通过以下方试解决: code →首选项 →设置 ,在右侧窗口“用户配置”.“工作区设置”添加以下代码: // ...