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的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...
随机推荐
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发4- 后台模板html页面创建
上一篇教程<asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发>完成了本项目的登录模块,登录后就需要进入后台管理首页了,需要准备一个后台模 ...
- CL_GUI_ALV_GRID 触发PAI事件(Application event)
*&---------------------------------------------------------------------* *& Report Z_BARRY_A ...
- Kafka笔记3
向Kafka写入消息从创建一个ProducerRecord对象开始,ProducerRecord需要包含目标主题和要发送的内容,我们还可以指定键或分区,在发送ProducerRecord对象时,生产者 ...
- python列表的内建函数
list.append(obj) 向列表中添加一个对象obj list.count(obj) 返回一个对象obj 在列表中出现的次数 list.extend(seq)a 把序列seq 的内容添加到列表 ...
- 细谈unity资源加载和卸载
转载请标明出处:http://www.cnblogs.com/zblade/ 一.概要 在了解unity的资源管理方式之后,接下来细谈一下Unity的资源是如何从磁盘中加载到运行时的内存中,以及又是如 ...
- 从零开始实现放置游戏(七)——实现挂机战斗(5)RMS系统后台参数校验
前面几章实现了在RMS系统中进行数据的增删查改以及通过Excel批量导入.但仍有遗留的问题,比如在新增或编辑时,怪物的生命值.护甲等数据我们可以输入负值,这种数据是不合理且没有意义的.本章我们就实现服 ...
- 利用org.mybatis.generator生成实体类
springboot+maven+mybatis+mysql 利用org.mybatis.generator生成实体类 1.添加pom依赖: 2.编写generatorConfig.xml文件 ( ...
- Ubuntu 配置docker镜像加速器
1. 安装/升级Docker客户端 推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce 2. 配置镜像加速器 针对Docker客户端版本大于 1.10.0 的用户 您可以通 ...
- 10月17日 JS开始日~
1.变量提升 变量提升是浏览器的一个功能,在运行js代码之前,浏览器会给js一个全局作用域,叫window, window分为两个模块,一个叫做内存模块,一个叫做运行模块,内存模块找到当前作用域下的 ...
- VIM技巧, .vimrc文件
将 .vimrc文件上传到用户家目录下 文件内容如下: autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()&quo ...