本章的名字虽然叫列表和元组,但是本章讲的最多的是列表,元祖指讲了很少的一部分。因为元组和列表很多方面都是一样的。

  列表和元组的区别:列表可以被修改,元祖不可以被修改。

  python包含的6种内建序列:列表、元组、字符串、Unicode字符串、buffer对象、xrange对象。

  内建函数返回的是元组,因为元组是不可以被修改的。

  列表的形式是[] ,元素之间通过逗号分隔。

  序列(例如列表和元组)和映射(例如字典)是两类主要的容器。序列中的每个元素都有自己编号,而映射中的每个元素则有一个名字(也称为建)。

集合(set)既不是序列也不是映射类型

通用的序列操作:索引(indexing)、分片(slicing)、加(adding)、乘(multiply)、迭代(iteration)

  迭代(iteration):依次对序列中的每个元素重复执行某些操作。

索引(indexing): 序列中所有元素都是有编号的,编号都是从0开始的。使用复数索引时,python会从右边,也就是最后一个元素开始计数,最后一个元素的位置为-1 。

例:

>>>'hello'[1]

>>> 'e'

>>> input('year:')[3]

year:2016

>>> '6'

python3用input代替了python2中的raw_input

  分片(slicing):分片是通过冒号隔开两个索引来实现。第一个索引的元素包含在分片内,第二个不包含。

num[第一个索引:第二个索引:步长]

例如:

>>>num = [1,2,3,4,5,6]

>>>num[1:4:2]

[2,4]

第一个索引、第二个索引和步长都可以为负数。步长不能为0,为0的时候不执行。

当使用一个负数为步长的时候,必须让开始点(开始索引),大于结束点。

  加(adding):列表和字符串无法连接在一起。只有两种相同类型的序列才能进行连接操作。

例如:[1,2,3] + [4,5,6]     结果为[1,2,3,4,5,6]

'hello ' + 'world'      结果为 'hello world'

[1,2,3] + 'hello'    错误

  乘(multiply):用数字x乘以一个序列会生成新的序列,而新的序列中,原来的序列将会被重复x次

例如:'he' * 5         'hehehehehe'

[1] * 5         [1,1,1,1,1] 

[]表示空列表,里面什么东西都没有

None是一个python内建值,它确切的含义是“这里什么都没有”

[None] *  5       [None,None,None,None,None]

python3中的//表示整除,/表示除,无论值是整型还是浮点型。python2中默认的/表示整除。

成员资格:in

为了检查一个值是否在序列中,可以使用in运算符。

例如:>>>st = ['as','df','gh']             (列表成员也可以是列表,这样查看的时候是查看一个列表是否在该列表中)

>>>'as' in st

True

>>>'bb' in st

False

>>> 'st' in 'string'

True

长度、最小值、最大值:len()、min()、max()

  len()、min()、max()属于内建函数。

  len()返回序列中所包含的元素个数。

  min()和max()返回序列中的最小和最大的元素。

例如:>>> num = [3,4,2,5,1]

>>>len(num)

5

>>>max(num)

5

>>>min(num)

1

>>>max(2,3,5,1)

5

max()和min()的参数不仅可以是一个序列,还可以以多个数字直接作为参数。

列表:

list函数:可以将所有序列转换成列表。

例如:>>>list('hello')

['h','e', 'l', 'l', 'o']

注意:list使用于所有类型的序列,不只是字符串。

基本列表操作:

列表可以使用适用于序列的标准操作,例如索引、分片、链接、乘法。

元素赋值:可以直接用下标的方法进行赋值,不能对一个不存在的元素进行赋值。 x = [1,2,3]   x[1] = 5    结果x=[1,5,3],赋值索引的下标不能超过2,超过2为不存在的元素。

删除元素:是用del语句来实现。del x[1]   结果x=[1,3] 。  del可以用于很多变量,不仅是列表,字典也是可以的。

分片赋值:它可以使程序一次为多个元素赋值。

  使用分片时可以时使用与原序列不等长的序列将分片替换。

  >>> name = list('perl')

  >>> name[2:] = list('python')

  >>> name

  ['p','e','p','y','t','h','o','n']

  分片赋值可以在不需要替换任何元素的情况下插入新的元素

  >>> num = [1,5]

  >>> num[1:1] =  [2,3,4]

  >>> num

  [1,2,3,4,5]

  与之类似,分片也可以删除元素

  >>> num[1:4] = []

  >>> num

  [1,5]

当然,上述操作也可以加上步长。

列表方法:append、count、extend、index、insert、pop、remove、reverse、sort、高级排序。

  append:用于在列表末尾追加新的对象。 lst = [1,2,3]   lst.append(4)      结果lst = [1,2,3,4] ,   列表本身被修改。

  count:统计某个元素在列表中出现的次数。[[1,2], [1,1],1,1,[2,3]].count([1,1])   结果为1, [[1,2], [1,1],1,1,[2,3]].count(1) 结果为2

  extend:可以在列表的尾部一次性追加另外一个序列中的多个值。a=[1,2,3] b=[4,5,6] a.extend(b)   结果a = [1,2,3,4,5,6] 。列表本身的值被修改。如果使用+号连接两个列表,也可以得到相同的值,但是列表本身没有被修改,只是返回值是相同的。a + b 返回的结果是[1,2,3,4,5,6], 但是a依旧是[1,2,3]

  index:从列表中找出某个值第一个匹配项的索引位置。当没有这个元素时会发生异常。st = ['qw','er','er','er','sd']   st.index('er')  结果为1

  insert:用于将对象插入到列表中。st.insert(2,'a')  结果st = ['qw','er','a','er','er','sd']   , 列表本身进行的修改。

  pop:会移除列表中的一个元素,默认是最后一个元素,并且返回这个元素的值。x=[1,2,3,4] x.pop() 结果4     x.pop(0) 结果 1 。pop是唯一一个既能修改列表又能返回元素值得列表方法。

  remove:用于移除列表中某个值的第一个匹配项。st.remove('er') 结果st = ['qw','a','er','er','sd'] 。该方法是一个没有返回值的原位置改变方法。

  reverse:将列表中的元素反向存放。a.reverse() a=[3,2,1]。 该方法也改变了列表但是不返回值(就像remove和sort)

  sort:该方法用于在原位置对列表进行排序。原来的列表被改变,不是简单的返回一个已经排序的列表副本。该方法没有返回值。

>>> x = [3,1,2,4]

>>> x.sort()  ;  x

[1,2,3,4]

>>> y = x.sort()           错误,该方法没有返回值。y的值是None

如果只是想获得一个已排序的列表副本,原列表仍然保留,可以只用下面的方法:

>>> y = x[:]           这里不能简单的使用y=x 来赋值,这样是令y也指向x的值,x改变时y也随之改变。x[:]是包含了x所有元素的分片,这是一种很有效率的赋值整个列表的方法

>>> y.sort()            使用副本来排序,不会修改原始的列表。

也是使用sorted函数:

>>> y = sorted(x)

此时,y的值为[1,2,3,4] ,x的值仍为[3,1,2,4]

sorted 函数不仅可以用于列表,还可以用于任何序列,总是返回一个列表:

>>> sorted('python')

['h', 'n', 'o', 'p', 't', 'y']

  高级排序:sort方法有两个可选的参数key和reverse.

如果想使排序结果为逆序,可以调节参数x.sort(reverse = True)即可。

如想像根据长度来排序,可以使用len 即 x.sort(key = len)

元组:不可变序列

  如果你使用逗号隔开了一些值,那么你就自动创建了一个元组。

  >>> 1,2,3

  (1,2,3)

  元组大部分是通过圆括号括起来的,空元组可以用没有包含内容的两个括号表示()。

  包含一个值得元组,不是简单的一个值就可以,而是要在这个值后面加上一个逗号。

  >>> 3 * (42)

  126

  >>> 3 * (42,)

  (42, 42, 42)

tuple函数:可以将一个序列作为参数,转换成元组。如果参数是元组,那么该参数会被原样返回。

  >>> tuple([1,2,3])

  (1,2,3)

  >>> tuple('abc')

  ('a', 'b', 'c')

  >>> tuple((1,2,3))

  (1,2,3)

Python基础教程笔记 第二章的更多相关文章

  1. Python基础教程笔记 第一章

    /  表示整除,当导入_future_模块中的version时,/ 表示正常的的除法, 此时可用//表示整除,不论数字是整型还是浮点型,都可以用//表示整除. ** 表示幂次方  例如 2**3    ...

  2. 《Python基础教程》第二章:列表和元组(1)

    列表可以修改,元组则不能 字符串就是一个由字符组成的序列 使用分片操作来访问一定范围内的元素,分片操作的实现需要提供两个索引作为边界,第一个索引的元素是包含在分片内的,而第二个不包含在分片内. 如果分 ...

  3. 《Python基础教程》第二章:列表和元组(2)

    list函数可以将字符串转换为列表 ' '.join(somelist)可以将列表转换为字符串 从列表中删除元素可以使用del语句来实现 方法是与对象有紧密联系的函数:对象.方法(参数) append ...

  4. 《python基础教程(第二版)》学习笔记 文件和素材(第11章)

    <python基础教程(第二版)>学习笔记 文件和素材(第11章) 打开文件:open(filename[,mode[,buffering]]) mode是读写文件的模式f=open(r' ...

  5. 《python基础教程(第二版)》学习笔记 类和对象(第7章)

    <python基础教程(第二版)>学习笔记 类和对象(第7章) 定义类class Person:    def setName(self,name):        self.name=n ...

  6. 《python基础教程(第二版)》学习笔记 函数(第6章)

    <python基础教程(第二版)>学习笔记 函数(第6章) 创建函数:def function_name(params):  block  return values 记录函数:def f ...

  7. 《python基础教程(第二版)》学习笔记 语句/循环/条件(第5章)

    <python基础教程(第二版)>学习笔记 语句/循环/条件(第5章) print 'AB', 123 ==> AB 123 # 插入了一个空格print 'AB', 'CD' == ...

  8. 《python基础教程(第二版)》学习笔记 字典(第4章)

    <python基础教程(第二版)>学习笔记 字典(第4章)创建字典:d={'key1':'value1','key2':'value2'}lst=[('key1','value1'),(' ...

  9. 《python基础教程(第二版)》学习笔记 字符串(第3章)

    <python基础教程(第二版)>学习笔记 字符串(第3章)所有的基本的序列操作(索引,分片,乘法,判断成员资格,求长度,求最大最小值)对字符串也适用.字符串是不可以改变的:格式化输出字符 ...

随机推荐

  1. Too Rich HDU - 5527 (贪心+dfs)

    Too Rich Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  2. Linux分享笔记:查看帮助命令 & 常用系统工作命令

    在执行命令时,为了防止出现权限不足的问题,在登陆Linux系统时,要点击普通用户名下的 “Not listed?” 用root管理员身份登陆. [1] 执行查看帮助命令 man 这条命令用来查看帮助文 ...

  3. pycharm在同目录下import,pycharm会提示错误,但是可以运行

    原因是:    pycharm不会将当前文件目录自动加入自己的sourse_path. 解决方案:右键make_directory as-->sources path将当前工作的文件夹加入sou ...

  4. 【CSS】css控制模块到顶层或底层

    举例子,分别有div1和div2现要把div1控制在div2的顶层,可以这样做: } div.div2{} 两个要点:一.设置div的position为absolute,即绝对定位.二.z-index ...

  5. java util - MD5/AES/RSA快速调用工具

    测试代码 package cn.java.security; import java.security.Key; import java.util.Base64; import org.junit.A ...

  6. 【PHP】判断变量是否为控

    1. isset功能:判断变量是否被初始化 说明:它并不会判断变量是否为空,并且可以用来判断数组中元素是否被定义过注意:当使用isset来判断数组元素是否被初始化过时,它的效率比array_key_e ...

  7. Neon Lights in Hong Kong【香港霓虹灯】

    Neon Lights in Hong Kong Neon is to Hong Kong as red phone booths are to London and fog is to San Fr ...

  8. HDU1301 Jungle Roads

    Jungle Roads The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign ai ...

  9. spark测试几个hadoop的典型例子

    1.求每年的最高温度数据格式如下: 0067011990999991950051507004888888889999999N9+00001+999999999999999999999900670119 ...

  10. pip install 报错 Could not fetch URL

    Could not fetch URL https://pypi.python.org/simple/xxx/: There was a problem confirming the ssl cert ...