Python_Day1_人人都爱列表
列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或 所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。 鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如names)是个不错的主意。
列表非常适合利用顺序和位置定位某一元素,尤其是当元素的顺序或内容经常发生改变时。与字符串不同,列表是可变的。你可以直接对原始列表进行修改:添加新元素、删除 或覆盖已有元素。在列表中,具有相同值的元素允许出现多次。
1.1常用列表方法
- #使用 dir(list) ,查看列表的内置方法:
>>> dir(list)- ['__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
- #向列表末尾追加一个元素
- >>> numbers = [1,2,2,3,3,3]
- >>> numbers.append(4)
- >>> numbers
- [1, 2, 2, 3, 3, 3, 4]
1.1.2 clear
- #清除一个列表中的所有元素
- >>> n
- [1, 2, 3, 4, 5]
- >>> n.clear()
- >>> n
- []
1.1.3 copy
- #复制一个列表
- >>> n = [1,2,3,4,5]
- >>> n.copy()
- [1, 2, 3, 4, 5]
- >>> n.copy()
- [1, 2, 3, 4, 5]
- >>> num = n.copy()
- >>> num
- [1, 2, 3, 4, 5]
1.1.4 count
- #计算某个元素在列表中出现的次数
- >>> numbers
- [1, 2, 2, 3, 3, 3, 4]
- >>> numbers.count(1)
- 1
- >>> numbers.count(2)
- 2
- >>> numbers.count(3)
- 3
- >>> numbers.count(4)
- 1
1.1.5 extend
- #直接向列表末尾一次性追加另一个列表
- >>> numbers
- [1, 2, 2, 3, 3, 3, 4]
- >>> a = [4,4,4]
- >>> numbers.extend(a)
- >>> numbers
- [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
- >>> a
- [4, 4, 4]
1.1.6 insert
- #将对象插入列表中
- >>> numbers
- [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
- >>> numbers.insert(0,0)
- >>> numbers
- [0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
1.1.7 pop
- #移除列表中的最后一个元素,默认是最后一个
- >>> numbers
- [0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
- >>> numbers.pop()
- 4
- >>> numbers
- [0, 1, 2, 2, 3, 3, 3, 4, 4, 4]
1.1.8 remove
- #默认移除列表中第一个匹配的元素
- >>> num
- [1, 2, 1, 3, 2]
- >>> num.remove(1)
- >>> num
- [2, 1, 3, 2]
- >>> num.remove(2)
- >>> num
- [1, 3, 2]
1.1.9 reverse
- #将列表中的元素反向存放
- >>> numbers
- [0, 1, 2, 2, 3, 3, 3, 4, 4, 4]
- >>> numbers.reverse()
- >>> numbers
- [4, 4, 4, 3, 3, 3, 2, 2, 1, 0]
1.1.10 sort
- #########################################################
- #对列表排序,这个我比较喜欢,里面挺多好玩的东西,下面做个简单的介绍#
- #########################################################
#默认排序- >>> L = [1,4,3,2]
- >>> L.sort()
- >>> L
- [1, 2, 3, 4]
- #自定义排序
- #咱们先看看sort的使用方法
- >>> L.sort.__doc__
- 'L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*'
- #根据提供的key函数为元素产生一个键,列表的元素按照这个键值来排序
- >>> x = ['abc','a','bc','abcd']
- >>> x.sort(key=len)
- >>> x
- ['a', 'bc', 'abc', 'abcd’]
- #反向排序
- >>> n = [3, 1, 2, 5]
- >>> n.sort(reverse=True)
- >>> n
- [5, 3, 2, 1]
1.2 其他的几个方法
1.2.1 in
- #使用 in 判断值是否存在
- #判断一个值是否存在于给定的列表中的许多方式,其中最具有 Python 风格的是使用 in:
- >>> num = [1, 2, 3]
- >>> 1 in num
- True
- >>> 5 in num
- False
- >>>
- #同一个值可能出现在列表的多个位置,但只要至少出现一次,in就会返回Ture
- >>> num = [1, 1, 2, 3]
- >>> 1 in num
- True
1.2.2 len()
- #使用 len()获取长度
- #len()可以返回列表长度
- >>> num = [1, 2, 3]
- >>> len(num)
- 3
- #对于汉字呢?是如何计算长度呢?
- >>> num = "菜鹌鹑2333"
- >>> len(num)
- 7
- #so,你get到了吗?
1.2.3 “=” 和 “copy()”有啥不一样呢?
- # “=” 是赋值 copy()是复制
- #这个相信大家都知道,但是到底还有啥区别呢?往下看
- >>> a = [1, 2, 3]
- >>> a
- [1, 2, 3]
- >>> b = a
- >>> b
- [1, 2, 3]
- >>> a[0] = '菜鹌鹑'
- >>> a
- ['菜鹌鹑', 2, 3]
- >>> b
- ['菜鹌鹑', 2, 3]
- #和软链接有点像哦,让我们看看他们的内存地址:
- >>> hex(id(a))
- '0x1a93262c588'
- >>>
- >>> hex(id(b))
- '0x1a93262c588'
- #我们发现,两个变量指向同一个对象。
- #咱们再看看copy()
- >>> c = a.copy()
- >>> a
- [1, 2, 3]
- >>> c
- [1, 2, 3]
- >>> a[0] = '菜鹌鹑'
- >>> c
- [1, 2, 3]
- #没办法改变c列表了,再看看他们的内存地址
- >>> hex(id(a))
- '0x1a93262c588'
- >>> hex(id(c))
- '0x1a93262ce08'
- #原来copy()生成了新的列表,已经指向两个不同的对象。
- #除了copy(),还有其他方法生成新列表
- ########
- #list()#
- ########
- >>> a = [1,2,3]
- >>> b = list(a)
- >>> b
- [1, 2, 3]
- >>> hex(id(a))
- '0x2e78957c588'
- >>> hex(id(b))
- '0x2e78957cfc8'
- #########
- #列表切片#
- #########
- >>> a = [1,2,3]
- >>> c = a[:]
- >>> c
- [1, 2, 3]
- >>> hex(id(c))
- '0x2e78957c588'
- >>> hex(id(a))
- '0x2e78957ce08'
Python_Day1_人人都爱列表的更多相关文章
- Head First Python之人人都爱列表(1-初识Python)
IDLE 内置函数==BIF==built-in function 默认地,内置函数都是紫色,字符串是绿色,关键字是橙色. tab:自动补全 Alt-P:前一个 Alt-N:下一个 列表的特性 列表看 ...
- Python学习笔记1——人人都爱列表
一些BIF函数在列表中的应用: Python 3.3.4 (v3.3.4:7ff62415e426, Feb 10 2014, 18:13:51) [MSC v.1600 64 bit (AMD64) ...
- 【head first python】1.初识python 人人都爱列表
#coding:utf-8 #创建简单的python列表 movies = ["The Holy Grail", "The Life of Brain", &q ...
- NoSQL初探之人人都爱Redis:(2)Redis API与常用数据类型简介
一.Redis API For .Net 首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些第三方的开源类库.目前最流行的就是Se ...
- 【转】NoSQL初探之人人都爱Redis:(2)Redis API与常用数据类型简介
一.Redis API For .Net 首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些第三方的开源类库.目前最流行的就是Se ...
- NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装
一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经 ...
- NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例
一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象.消息被发送到队列中,“消息队列”是在消息的传输过程中保存消息的容器 ...
- NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索
一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...
- 【转】 NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索
一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...
随机推荐
- web的seo
摘要:搜索引擎优化是一种具有很高技术性的活动,也是一种营销功能,必须将它作为营销活动处理.SEO从业者必须理解公司的服务.产品.总体业务战略.竞争形势.品牌.未来网站开发目标和相关的业务构成. SEO ...
- java多线程之wait和notify
多线程中的通信是非常重要的概念,线程直接实现通信就可以并发完成很多复杂工作. java在Object类中就设计了wait()和notify()两个方法,以解决这个问题. 1.释义: wait()方法将 ...
- github 上传更新代码(最简单的方法)
1.首先你需要一个github账号,还没有的朋友先去注册一个吧! GitHub地址:https://github.com/ 我们使用git需要先安装git工具,这里给出下载地址,下载后一路直接安装即可 ...
- 前后端开发(2):浏览器与PHP程序的交互
上一节介绍怎么在mac电脑上启用PHP程序,并且演示了一个简单的例子,这个例子运行时,涉及了浏览器.apache以及PHP程序的交互,这三者的关系大概是这样的: 一般来说,浏览器(或者类似功能的程序) ...
- JVM(七):JVM内存结构
JVM(七):JVM内存结构 在前几节的文章我们多次讲到 Class 对象需要分配入 JVM 内存,并在 JVM 内存中执行 Java 代码,完成对象内存的分配.执行.回收等操作,因此,如今让我们来走 ...
- java的equals与==的区别
看了网上关于equal与==的区别,感觉很多有些片面,不仔细,这里我来说说我对equal与==的理解 首先要了解基本类型与引用类型 1.int,char,boolean之类的就是基本类型,我们只要使用 ...
- 关于Jvm类加载机制,这一篇就够了
前言 一个月没更新了,这个月发生了太多的事情,导致更新的频率大大降低,不管怎样收拾心情,技术的研究不能落下! jvm作为每个java程序猿必须了解的知识,博主推荐一本书<深入理解Java虚拟机& ...
- 微服务网关 Spring Cloud Gateway
1. 为什么是Spring Cloud Gateway 一句话,Spring Cloud已经放弃Netflix Zuul了.现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是 ...
- 模型model
django的ORM系统 ORM概念:对象关系映射(Object Relational Mapping,简称ORM)ORM的优势:不用直接编写SQL代码,只需像操作对象一样从数据库操作数据. 模型类必 ...
- visual studio code emmet 插件不提示?解决方案
使用visual studio code编辑.vue文件时,emmet插件无法使用, 可以通过以下方试解决: code →首选项 →设置 ,在右侧窗口“用户配置”.“工作区设置”添加以下代码: // ...