python 列表和元组

来源:互联网 发布:nature数据库特点 编辑:程序博客网 时间:2024/04/28 01:31
1 序列概览
  1. 说明:序列包括(列表,元组,字符串,buffer对象,xrange对象)
  2. 注意:列表可以修改,元组不能被修改。
  3. 例子:
>>> edward=["Edward Gumby", 42]>>> bill =["Bill Gunn", 30]>>> database = [edward, bill]>>> database[['Edward Gumby', 42], ['Bill Gunn', 30]]>>> database[0]['Edward Gumby', 42]

2 通用序列操作

 

2.1 索引

  1. 说明:
    1. 索引值可正可负,正索引从0开始,从左往右;负索引从-1开始,从右往左。使用负数索引时,python会从最后一个元素开始计 数。最后一个元素的位置编号是-1;
    2. 字符串可以直接使用索引;
  2. 例子:
>>> str = "Test"#一般索引>>> str[0]'T'>>> str[1]'e'#负数索引>>> str[-1]'t'>>> str[-2]'s'#字符串直接索引>>> "Test"[0]'T'>>> "Test"[1]'e'>>> "Test"[-1]'t'

2.2 分片

  1. 说明:使用分片操作来访问一定范围内的元素。分片通过冒号相隔的两个 索引来实现。
  2. 注意:
    1. 第一个索引是需要提取部分的第一个元素的索引值,而最后的索引 则是分片之后右侧剩下部分的第一个元素的索引;
    2. 如果右侧全部提取,则分片时,可以不写右侧索引,也可以将右侧索引 写最后一个元素的下一个索引;
    3. 如果左侧全部提取,刚分片时,左侧索引可以写0,也可以不写;
    4. 设置步长:不指明步长时,步长取1,也可以指定步长,步长不能为 0 ,步长也可以是负数,可以反序输出提取部分。
  3. 例子:
>>> data=[1,2,3,4,5,6,7,8,9,10]#提取序列的一部分>>> data[1:6][2, 3, 4, 5, 6]#提取右侧全部>>> data[3:][4, 5, 6, 7, 8, 9, 10]>>> data[7:10][8, 9, 10]#提取左侧全部>>> data[:3][1, 2, 3]>>> data[0:3][1, 2, 3]#负索引提取>>> data[-3:-1][8, 9]>>> data[-3:][8, 9, 10]#设置步长>>> data[::2][1, 3, 5, 7, 9]>>> data[1::2][2, 4, 6, 8, 10]#步长也可以是负数>>> data[::-1][10, 9, 8, 7, 6, 5, 4, 3, 2, 1]>>> data[-1:-8:-1][10, 9, 8, 7, 6, 5, 4]>>> data[8:1:-1][9, 8, 7, 6, 5, 4, 3]

2.3 序列相加

  1. 说明:通过加号可以进行序列连接;
  2. 例子:
#序列相加>>> first=[1,2]>>> second=[3,4]>>> first+second[1, 2, 3, 4]

2.4 乘法

  1. 说明:用一个正整型数乘以序列,可以得到一个新的重复了n次的序列
  2. 注意:
    1. 空列表可以简单地通过两个中括号进行表示([])
    2. None 是Python关键字,表示“什么也没有”
  3. 例子:
#10个python>>> 'python ' * 10'python python python python python python python python python python '#10个空对象>>> [None] * 10[None, None, None, None, None, None, None, None, None, None]#打印盒子mystr = input("Please input a string:")strLen = len(mystr)lineStart = 20print (" " * lineStart + "+" + "-" * strLen + "+")print (" " * lineStart + "|" + " " * strLen + "|")print (" " * lineStart + "|" + mystr + "|")print (" " * lineStart + "|" + " " * strLen + "|")print (" " * lineStart + "+" + "-" * strLen + "+")>>>Please input a string:My name is Bill Gunn                    +--------------------+                    |                    |                    |My name is Bill Gunn|                    |                    |                    +--------------------+

2.5 成员资格

  1. 说明:使用关键字 in 检查值是否在序列中。如果值在序列中返回 “True”,否则返回“False”。值可以是元素也可以是子序列。
  2. 例子:
#检查值是否在序列中>>> mystr="this is a string">>> 'this' in mystrTrue

2.6 长度,最大值,最小值

  1. 说明:
    1. len :返回序列包含元素的数量;
    2. min :返回序列中的最小值;
    3. max :返回序列中的最大值;
#min,max和len的用法>>> data = [12,31,2,1,3,12,3,13,131234,12]>>> min(data)1>>> max(data)131234>>> len(data)10

3 列表:Python的“苦力”

 

3.1 list

  1. 说明:可以将字符串或其他序列转换成列表。
  2. 注意:list是类型,不是函数。
  3. 例子:
>>> list("This is a test string")['T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 't', 'e', 's', 't', ' ', 's', 't', 'r', 'i', 'n', 'g']

3.2 基本列表操作

  1. 说明:
    1. 元素赋值:使用索引标记来为某个特定的,位置明确的元素赋值;
    2. 元素删除:使用 del 语句;
    3. 分片赋值:
      1. 可以一次为多个元素赋值;
      2. 原片与新片可以长度不同;
      3. 分片赋值可以在指定位置插入新的元素;
  2. 例子:
>>> mylist = [1,2,3,4,5]#列表元素赋值#索引必须在列表范围内>>> mylist[10] = 10Traceback (most recent call last):  File "<pyshell#2>", line 1, in <module>    mylist[10] = 10IndexError: list assignment index out of range>>> mylist[0] = 100>>> mylist[100, 2, 3, 4, 5]#删除元素>>> del(mylist[0])>>> mylist[2, 3, 4, 5]>>>#分片赋值>>> mystr = list("Nale Gunn")>>> mystr[0:4] = list("Bill")>>> mystr['B', 'i', 'l', 'l', ' ', 'G', 'u', 'n', 'n']#分片赋值时,原片与新片长度不同>>> mystr=list("Bill Gunn")>>> mystr[-5:] = list("gunn@gmail.com")>>> mystr['B', 'i', 'l', 'l', 'g', 'u', 'n', 'n', '@', 'g', 'm', 'a', 'i', 'l', '.', 'c', 'o', 'm']>>>#分片赋值可以在指定位置插入新的元素>>> mystr=list("Bill Gunn")>>> mystr[0:0] = list("My name is ")>>> mystr['M', 'y', ' ', 'n', 'a', 'm', 'e', ' ', 'i', 's', ' ', 'B', 'i', 'l', 'l', ' ', 'G', 'u', 'n', 'n']>>>

3.3 列表方法

  1. 说明:
    1. append:用于在列表末尾追加一个新的元素;列表调用该方法后,直接被该 方法修改;
    2. count:用于统计某个元素在列表中出现的次数;
    3. extend:在列表的末尾一次性追加另一个列表中的多个元素,该方法 也是直接修改原列表,这也是与列表连接操作的区别;
    4. index:找出某个匹配项第一次出现的索引;
    5. insert:在列表中插入新的对象;
    6. pop:移除列表中的一个值(默认是最后一个),并返回该元素的值;
    7. remove:用于移除某个值在列表中的第一个匹配项;
    8. reverse:将列表中的值反向存放;
    9. sort:对列表进行排序;
    10. sorted内建函数:对序列进行反序,并返回一个列表
  2. 注意:
    1. 列表复制:用分片的方法复制比较有效率。
  3. 例子:
#append>>> lst = list("Test")>>> lst.append(list("String"))>>> lst['T', 'e', 's', 't', ['S', 't', 'r', 'i', 'n', 'g']]>>> lst.append("String")>>> lst['T', 'e', 's', 't', ['S', 't', 'r', 'i', 'n', 'g'], 'String']>>> lst=list("Test")>>> lst.append("!")>>> lst['T', 'e', 's', 't', '!']#count>>> lst.count('T')1>>> lst.count('t')1#extend>>> lst.extend(list("HaHa"))>>> lst['T', 'e', 's', 't', '!', 'H', 'a', 'H', 'a']>>> lst.index('t')3>>> #pop>>> lst = [1,2,3]>>> lst.pop()3>>> lst[1, 2]>>> lst.pop(0)1>>> lst[2]>>> #pop>>> lst = [1,2,3]>>> lst.pop()3>>> lst[1, 2]>>> lst.pop(0)1>>> lst[2]#remove>>> lst=list("12345678")>>> lst['1', '2', '3', '4', '5', '6', '7', '8']#删除不存在的对象会报错>>> lst.remove(2)Traceback (most recent call last):  File "<pyshell#42>", line 1, in <module>    lst.remove(2)ValueError: list.remove(x): x not in list>>> lst.remove('2')>>> lst['1', '3', '4', '5', '6', '7', '8']#reverse>>> lst.reverse()>>> lst['8', '7', '6', '5', '4', '3', '1']#sort>>> lst.sort()>>> lst['1', '3', '4', '5', '6', '7', '8']>>> lst.sort(key=len)>>> lst['1', '3', '4', '5', '6', '7', '8']>>> lst = ['asdf','qwersf','aaf','s','afasfd','qre']>>> lst.sort(key=len)>>> lst['s', 'aaf', 'qre', 'asdf', 'qwersf', 'afasfd']>>> lst.sort(key=len,reverse=True)>>> lst['qwersf', 'afasfd', 'asdf', 'aaf', 'qre', 's']>>> #列表复制>>> x = list('123456')#下面的复制,只是让y也指向x指向的对象,所以修改x,也会影响y的值>>> y = x>>> x.reverse()>>> y['6', '5', '4', '3', '2', '1']#用分片的方法复制,x与y相互独立,修改x,不会影响y>>> y=x[:]>>> y.sort()>>> x['6', '5', '4', '3', '2', '1']>>> y['1', '2', '3', '4', '5', '6']>>> 

4 元组

 

4.1 元组定义:

  1. 说明:元组不可以修改,一般用圆括号括起来
  2. 例子:
#一般元组>>> 1,2,3(1, 2, 3)>>> (1,2,3)(1, 2, 3)#一个元素的元组>>> (1,)(1,)>>> 2,(2,)#空元组>>> ()()>>> #元组的乘法>>> 4* (2,)(2, 2, 2, 2)>>> 

4.2 tuple函数

  1. 说明:以一个序列为参数,将其转换为元组;
  2. 例子:
>>> tuple("CONSTANT")('C', 'O', 'N', 'S', 'T', 'A', 'N', 'T')>>> tuple(list("CONST"))('C', 'O', 'N', 'S', 'T')>>> 

4.3 元组的意义:

  1. 元组可以在映射中当作键使用;
  2. 元组作为很多内建函数和方法的返回值存在。

Date: 2011-11-14 09:28:51

Author:

Org version 7.7 with Emacs version 23