python学习(二) 列表和元组
第2章 列表和元组
2.1 序列概论
python有六种内建的序列,本章讨论最常用的两种类型:列表和元组。其他的内建序列有字符串、Unicode字符串、buffer对象和xragne对象。
列表和元组的主要区别是:列表可以修改,元组不能修改。
1)列表
list1 = ['Google', 'Runoob', 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"];
2)元组
tup1 = ('Google', 'Runoob', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";
>>> edward=['fsdfsd','fsdfs']
>>> edward
['fsdfsd', 'fsdfs']
>>> john=['gfdg',45]
>>> john
['gfdg', 45]
>>> database=[edward, john]
>>> database
[['fsdfsd', 'fsdfs'], ['gfdg', 45]]
注意:序列(比如列表和元组)映射(例如字典)是两类主要容器。序列中每个元素都有自己的编号,而映射中每个元素都有一个名字。而集合既不是序列也不是映射。
2.2 通用序列操作
2.2.1 索引
>>> greetin = 'hello'
>>> greetin[0]
'h'
可以使用负数进行索引,最后一个元素的位置是-1
>>> test='hello'
>>> test[-1]
'o'
>>>
字符串字面值可以直接使用索引:
>>> 'hello'[1]
'e'
如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作,
>>> test = input()[3]
abcdeft
>>> test
'd'
>>> endings = ['st','nd','rd'] +17*['th']\
+ ['st','nd','rd'] + 7*['th']\
+ ['st']
>>> endings
['st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'st']
2.2.2 分片
>>> tag='<a href = "http://www.python.org">Python web site</a>'
>>> tag[9:30] // 从位置9到位置30(注意:9在分片内,30不在内)
' "http://www.python.o'
>>> tag[9:-4] // 从位置9到位置-4(注意:9在分片内,-4不在分片内)
' "http://www.python.org">Python web site'
>>> numbers=[1,2,3,4,5,6,7,8,9,10]
>>> numbers[0:1]
[1]
>>> numbers[7:10] // 10不存在,它前面一个元素包含在分片中
[8, 9, 10]
>>>
>>> numbers[-3:] // 从-3开始的所有元素
[8, 9, 10]
>>> numbers[:3] // 从开始到3的元素
[1, 2, 3]
>>> numbers[:] // 整个序列
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
如何设置步长:
>>> numbers[0:10:2] //从0到10,步长是2的方式访问元组
[1, 3, 5, 7, 9]
步长不能是0,但是可以是负数:
>>> numbers[10:0:-1] // 如果步长是负数,需要序列的开头大于序列的结尾;如果步长是正数,需要开头小于结尾
[10, 9, 8, 7, 6, 5, 4, 3, 2]
2.2.3 序列相加
>>> [1,2,3] + [4,5,6] // 序列可以相加
[1, 2, 3, 4, 5, 6]
>>> "hellow" +"world" // 字符串可以相加
'hellowworld'
>>> [1,2,3] + "world!" // 不同类型不可以相加
Traceback (most recent call last):
File "<pyshell#59>", line 1, in <module>
[1,2,3] + "world!"
TypeError: can only concatenate list (not "str") to list
2.2.4 乘法
>>> 'python' *5 // 序列乘法,序列被重复N次
'pythonpythonpythonpythonpython'
None: python内建值,确切含义是“这里什么都没有”。所以,如果想初始化一个长度为10的列表,可以按照下面的列子来实现:
>>> seq = [None]*10
>>> seq
[None, None, None, None, None, None, None, None, None, None]
>>>
2.2.5 成员资格
in: 检查一个值是否在序列中
>>> permission = 'rw'
>>> 'r' in permission
True
>>> users = ['mlh','foo','bar']
>>> input() in users
mlh
True
>>>
>>> subject = '&&&&&fdfsfsdfsdfsdf&'
>>> "&&&" in subject
True
2.2.6 长度、最小值和最大值
len:包含元素的数量
min: 最大值
max:最小值
>>> numbers=[100,34,678]
>>> len(numbers)
3
>>> max(numbers)
678
>>> min(numbers)
34
2.3 列表:Python的“苦力”
2.3.1 list函数
因为字符串不能像列表一样被修改,所以有时根据字符串创建列表会很有用。list函数可以实现:
>>> var = list("hello")
>>> var
['h', 'e', 'l', 'l', 'o']
2.3.2 基本的列表操作
(1)改变列表:元素赋值
>>> x=[1,2,3]
>>> x[1] = 8
>>> x
[1, 8, 3]
(2)删除元素:
>>> x
[1, 8, 3]
>>> del x[1]
>>> x
[1, 3]
>>> names = ['a','b','c']
>>> del names[1]
>>> names
['a', 'c']
(3)分片赋值:
>>> name=list("perl")
>>> name
['p', 'e', 'r', 'l']
>>> name[2:] = "hhhh"
>>> name
['p', 'e', 'h', 'h', 'h', 'h']
也可以通过分片来删除元素:
>>> numbers
[100, 34, 678]
>>> numbers[1:2] = []
>>> numbers
[100, 678]
2.3.3 列表方法
(1) append: 在列表末尾追加新的对象
>>> list = [1,2,3]
>>> list.append(4)
>>> list
[1, 2, 3, 4]
注意:append并不是返回新列表,而是直接在原来列表的合适的位置修改。
(2) count: 统计某个元素在列表中出现的次数
>>> x = [[1,2],1,1,[2,1,[1,2]]]
>>> x.count(1)
2
>>> x.count([1,2])
1
(3) extend:在列表的末尾一次性追加另一个序列中的多个值
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
注意:这个操作看起来和连接操作很像,主要区别是:extend方法修改了被扩展的序列;而连接操作返回一个全新的列表。
也可以用分片的方式来实现extend的功能:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a[len(a):] = b
>>> a
[1, 2, 3, 4, 5, 6]
(4) index: 从列表中找出某个值第一个匹配项的索引位置
>>> knights = ['we','are','the']
>>> knights.index('we')
0
(5) insert: 将对象插入到列表中
>>> numbers = [1,2,3,5,6,7]
>>> numbers.insert(3,"fd")
>>> numbers
[1, 2, 3, 'fd', 5, 6, 7] // 注意:列表中元素的类型可以有多种
insert方法也可以用赋值来实现:
>>> numbers = [1,2,3,5,6,7]
>>> numbers[3:4] = ["fsdfsdf"]
>>> numbers
[1, 2, 3, 'fsdfsdf', 6, 7]
(6) pop
pop方法会移除列表中的一个元素,并且返回该元素的值
>>> x = [1,2,3]
>>> x.pop() // POP 是唯一一个可以既能修改列表又返回元素值的列表方法。
3
>>> x
(7) remove: 移除列表中某个值的第一个匹配项
>>> x = ['to','be','or','not','to','be']
>>> x.remove('to')
>>> x
['be', 'or', 'not', 'to', 'be']
(8) reverse:将列表中的元素反向存放
>>> x = [1,2,3]
>>> x.reverse() // 改变了列表但不返回值
>>> x
(9) sort:
>>> x = [1,4,2,6,3]
>>> x.sort() // 在原位置排序,改变序列的值
>>> x
[1, 2, 3, 4, 6]
如果获得一个列表的排序副本,而不改变原来列表的内容呢?
第一种方法:
>>> x = [5,2,6,7]
>>> y = x[:] // 注意:这里不能用y = x, 如果那样的话,y和x指向同样的内容。
>>> y.sort()
>>> y
[2, 5, 6, 7]
>>> x
[5, 2, 6, 7]
另外一种方法:
>>> x = [5,1,7,4]
>>> y = sorted(x)
>>> x
[5, 1, 7, 4]
>>> y
[1, 4, 5, 7]
(10) 高级排序: 按照自定义的比较函数进行排序
sort方法有另外两个可选的参数:key和reverse.如果要使用它们,就通过名字来指定。
x.sort(key = len) // 传len作为键函数,根据元素长度进行排序。
x.sort(reverse=True) // 是否进行反向排序
2.4 元组:不可变序列
元组与列表一样,也是一种序列,唯一的不同是元组不能修改。
>>> 1,2,3 // 用逗号分隔了一些值,就是元组。
(1, 2, 3)
>>> x= 1,2,3
>>> x
(1, 2, 3)
>>> 42
42
>>> 43, // 只有一个值的元组,一定要有逗号,
(43,)
>>> x = (42) // 逗号很重要,只添加圆括号是没有用的
>>> x
42
>>> x = (43,)
>>> x
(43,)
>>> 3*(40+2)
126
>>> 3*(40+2,)
(42, 42, 42)
2.4.1 tuple函数:把一个序列转成元组
>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple('aab')
('a', 'a', 'b')
>>> tuple((1,2,3))
(1, 2, 3)
2.4.2 基本元组操作:
>>> x = 1,2,3
>>> x[0]
1
>>> x[0:2]
(1, 2)
2.4.3 元组的意义何在?
有两个重要原因,元组是不可以替代的:
(1) 元组可以在映射(和集合的成员)中当做键使用,而列表则不行
(2)元组作为很多内建函数和方法的返回值存在。
2.5 小结
序列:典型的序列包括列表,字符串和元组。列表是可变的,而元组和字符串是不可变的。分片可以访问序列的一部分
成员资格: in
python学习(二) 列表和元组的更多相关文章
- python 数据类型二 (列表和元组)
一.列表 1.1 列表的介绍 列表是python的基本数据类型之一,其他编程语言也有类似的数据类型,比如JS中的数组,java中的数组等等,它是以[]括起来,每个元素用逗号隔开,而且可以存放各种数据类 ...
- Python学习3——列表和元组
一.通用序列操作——索引.切片.相加.相乘.成员资格检查 1.索引,正序从0开始为第一个元素,逆序从-1开始,-1为最后一个元素 >>> greeting[0] 'h' >&g ...
- Python学习_03_列表、元组、字符串
列表.元组.字符串这些通过顺序访问的对象统称为序列. 序列的标准操作符 对于一般的序列对象,包括列表.元组.字符串,都具有以下的标准操作: 1. element [not] in seq判断一个元素是 ...
- Python学习:列表、元组、字典、集合
转载:https://www.cnblogs.com/xc-718/p/9632942.html 列表/元组 列表和元组都是序列结构,它们本身很相似,但又有一点不同: 列表是用方括号标记,如:a=[1 ...
- python学习之列表和元组
配置环境:python 3.6 python编辑器:pycharm,代码如下: #!/usr/bin/python # -*- coding: UTF-8 -*- # list:是一种有序的集合,可以 ...
- Python学习笔记----列表、元组和字典的基础操作
文章目录 一.列表的基本操作 1.1 修改列表中的某个数据 1.2 获取某个元素的返回值(返回的是索引) 1.3 在列表中插入新的元素 1.4 删除列表中的元素 1.5 +和* 二.内置的函数和方法 ...
- Python 学习笔记(1)Python容器:列表、元组、字典与集合
Python容器:列表.元组.字典与集合 列表: 1.列表 的创建 使用[ ] 或者 list()创建列表:empty_list = [ ] 或者 empty_list= list() 使用list( ...
- python第二天 列表、元组
今天学习了列表.元组相关的知识:与C中的数组列表相似,元组为只读列表: 以及切片相关操作: #!usr/bin/env python #-*-coding:utf-8-*- # Author calm ...
- Python学习2-列表和元组
Python学习2-列表和元组 标签(空格分隔): 列表 元组 在Python中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序号--即元素的位置,也称为索引.索引从0开始. ...
- Python学习02 列表 List
Python学习02 列表 List Python列表 List Python中的列表(List)用逗号分隔,方括号包围(comma-separated values (items) between ...
随机推荐
- OAuth2疑问解答
转自:http://bylijinnan.iteye.com/blog/2277548 OAuth2的学习,我也是从阮一峰老师的博客中开始的:http://www.ruanyifeng.com/blo ...
- No mojo definitions
pom.xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</gro ...
- ubuntu14.04搭建Hadoop2.9.0伪分布式环境
本文主要参考 给力星的博文——Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04 一些准备工作的基本步骤和步骤具体说明本文不再列出,文章中提到的“见参考”均指以上 ...
- RabbitMQ 资料整理
前言: 官方教程: https://www.rabbitmq.com/getstarted.html 应用场景(之马云赚钱): http://blog.csdn.net/whoamiyang/arti ...
- 原生JS日历 + JS格式化时间格式
公司项目中用到,以前没做过,废了好几个小时 终于做好了 先来效果图(暂时没写样式 凑合着看吧) 点击左右按钮都能改变月份 下方表格中的数据也会跟着变化 贴上代码 : html部分: <div s ...
- spring 多数据源动态切换
理解spring动态切换数据源,需要对spring具有一定的了解 工作中经常遇到读写分离,数据源切换的问题,那么以下是本作者实际工作中编写的代码 与大家分享一下! 1.定义注解 DataSource ...
- 人生苦短之我用Python篇(深浅拷贝、常用模块、内置函数)
深浅拷贝 有时候,尤其是当你在处理可变对象时,你可能想要复制一个对象,然后对其做出一些改变而不希望影响原来的对象.这就是Python的copy所发挥作用的地方. 定义了当对你的类的实例调用copy.c ...
- 深度学习实战-----0001(移植反向传播Python to c++)
1. https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/ 老外教程 2. https://github. ...
- 使用iptables nat进行端口转发
1.将发向HostA:PortA的请求转发到HostB:PortB iptables -t nat -A PREROUTING -p tcp -i eth0 -d HostA --dport Port ...
- Centos6.4_X64编译安装php-5.4.17、nginx-1.4.2、mysql-5.6.13
安装参考: CentOS 6.3编译安装Nginx1.2.2+MySQL5.5.25a+PHP5.4.5 http://www.dedecms.com/knowledge/servers/linux- ...