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 ...
随机推荐
- vue2 遇到的问题汇集ing
1 .子路由 { path: '/order-list', //订单列表 name: "order-list", component(resolve) { require.ensu ...
- IFE 2015_spring task0002 自学记录
JavaScript数据类型及语言基础 1. 判断arr是不是一个数组,返回一个bool值. 首先javascript有5大基本数据类型:Undefined,Null,Boolean,Number和S ...
- RadioButton实现多选一
RadioButton实现多选一 一.简介 二.RadioButton实现多选一方法 1.将多个RadioButton放在一个RadioGroup里面 <RadioGroup android:i ...
- spring mvc:文本框
采用:<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> ...
- python脚本3_输入若干个整数打印出最大值
#输入若干个整数,打印出最大值 # m = int(input('Input first number >>>')) while True: c = input('Input a n ...
- python3.7安装模块MySQLdb报错error: Microsoft Visual C++ 14.0 is required.
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools&quo ...
- HDU 4725 建图
http://acm.hdu.edu.cn/showproblem.php?pid=4725 The Shortest Path in Nya Graph Time Limit: 2000/1000 ...
- WinForm---进度条的实现方法
(转自:http://www.cnblogs.com/Sue_/articles/2024932.html) 看了好几个WinForm程序了,发现他们对进度条的处理完全失去了进度条的作用.他们都是采用 ...
- 【lightoj-1039】A Toy Company(BFS)
The toy company "Babies Toys" has hired you to help develop educational toys. The current ...
- python django框架(一)
s4day63内容回顾: 1. 安装 2. 创建用户 + 授权 3. 连接 - 数据库 终端创建数据库(字符编码) - 数据表 终端 ORM pymysql create ...)engine=inn ...