列表是Python的6种内建序列(列表,元组,字符串,Unicode字符串,buffer对象,xrange对象)之一,

列表内的值可以进行更改,操作灵活,在Python脚本中应用非常广泛

列表的语法格式

文本格式:

[ 元素1,‘元素2’,‘元素3’,……,‘元素n’]

如:

['to','be','or','not','to','be']

数字格式:

[数字1,数字2,数字3,数字n]

如:

[1,20,15,]

 

在需要操作一组数值的时候,序列很好用。

可以通过序列表示数据库中一个人的信息——第一个元素是姓名,第二个元素是年龄。

根据上述内容编写一个列表

>>> zhangsan = ['zhangsan',18]

>>> lisi = ['lisi',19]

列表中可以嵌套列表,准确的说,列表中可以包含任意的数据类型(字符串、列表、元组、集合)

>>> database=[zhangsan,lisi]

>>> database

[['zhangsan', 18], ['lisi', 19]]

使用 list()函数也可以创建列表

从元组中创建列表

>>> hero =('Zhongkui','Anqila','Houyi','Xiaoqiao')
>>> list(hero)
['Zhongkui', 'Anqila', 'Houyi', 'Xiaoqiao']

从字符串创建列表
>>> list('cat')
['c', 'a', 't']
>>>

使用以下方法可以创建空列表

>>> empty_list = []
>>> empty_list
[]
>>> another_empty_list = list()
>>> another_empty_list
[]
>>>

列表索引和分片

索引、分片和上一章字符串的索引是一样的,不同之处是字符串的一个索引是当字符,而列表的索引是列表中的一个元素

也就是,列表中一对单引号中的数据

 >>> hero
('Zhongkui', 'Anqila', 'Houyi', 'Xiaoqiao')
>>> hero_list = list(hero)
>>> hero_list
['Zhongkui', 'Anqila', 'Houyi', 'Xiaoqiao']
>>> hero_list[0::2]
['Zhongkui', 'Houyi']
>>>

列表的操作

 

列表的基本操作

元素赋值

>>> x = [1,1,1]

>>> x[1] = 2

>>> x

[1, 2, 1]

 

删除元素

>>> provinces

['HeNan', 'HeBei', 'ShanDong', 'ShanXi', 'HuNan', 'HuBei', 'Jiangxi', 'Afuhan']

>>> del provinces[-1]

>>> provinces

['HeNan', 'HeBei', 'ShanDong', 'ShanXi', 'HuNan', 'HuBei', 'Jiangxi']

 

分片赋值

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

>>> num[3:] = [6,7]

>>> num

[1, 2, 3, 6, 7]

 

插入新元素

>>> num[3:3] = [4,5]

>>> num

[1, 2, 3, 4, 5, 6, 7]

 

分片删除

>>> del num[1:4]

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

>>> num

[1, 5, 6, 7]

列表的方法

1)追加append

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

>>> num.append(4)

>>> num

[1, 2, 3, 4]

 

2)统计次数count

>>> ['to','be','or','not','to','be'].count('to')

2

 

3)在列表末尾一次性追加另一个列表的多个值extend

>>> a = [1,2,3]

>>> b = [4,5,6]

>>> a.extend(b[1:3])

>>> a

[1, 2, 3, 5, 6]

 

4)显示列表中某个值第一个匹配项的索引位置index

>>> aaa = ['Today','is','a','nice','day']

>>> aaa.index('nice')

3

 

5)将对象插入到列表中insert

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

>>> num.insert(3,'four')

>>> num

[1, 2, 3, 'four', 4, 5, 6]

 

6)移除列表中的一个元素(默认是最后一个),并且返回该元素的值

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

>>> x.pop()

3

 

7)移除列表中某个值的第一个匹配项remove

>>> x =  ['to','be','or','not','to','be']

>>> x.remove('be')

 

8)将列表中的元素反向存放reverse

>>> x

['to', 'or', 'not', 'to', 'be']

>>> x.reverse()

>>> x

['be', 'to', 'not', 'or', 'to']

 

9)排序sort和sorted

>>> x = [3,7,4,64,23,71,2]

>>> x.sort()

>>> x

[2, 3, 4, 7, 23, 64, 71]

 

>>> sorted(x)

[2, 3, 4, 7, 23, 64, 71]

 

两者的区别在于sort不返回生成的列表值,sorted返回列表值

元组

创建元组

元组列表一样,也是一种序列。唯一的不同是元组不能修改。

语法

(元素1,元素2,……,元素n)

 

空元组可以用没有包含内容的两个圆括号来表示

()

如果要创建包括一个值的元组,必须加上逗号

(42,)

 

加上逗号和不加逗号代表的含义完全不同

>>> 3*(42)

126

>>> 3*(42,)

(42, 42, 42)

可以一次性将元组赋值给多个变量

>>> marx_tuple = ('Goucho','Chico','Harpo')
>>> a,b,c = marx_tuple
>>> a
'Goucho'
>>> b
'Chico'
>>> c
'Harpo'
>>>

有时候,这个过程被成为元组解包

tuple() 函数和之前提到的 list() 一样,可把其他类型的数据转换为元组

>>> tuple('cat')
('c', 'a', 't')
>>> tuple(hero_list)
('Zhongkui', 'Anqila', 'Houyi', 'Xiaoqiao')
>>>

字典

在Python中通过字典可以通过查找某个特定的键,从而找到它的值

6.1字典的创建

6.1.1语法格式

{a:123,‘b:234,‘c:345,……}

例:

>>> {'zhongkui':1511,'houyi':1509,'xiguatian':1508}

{'zhongkui': 1511, 'houyi': 1509, 'xiguatian': 1508}

将字典赋值给一个变量可以实现轻松查找

>>> shark = {'zhongkui':1511,'houyi':1509,'xiguatian':1508}

>>> shark['xiguatian']

1508

注:在字典中的键是唯一的,而值并不唯一

 

6.1.2通过dict函数创建字典

>>> Iphone = ('Iphone',5999)

>>> LV = ('LV',999)

>>> item = [Iphone,LV]

>>> d = dict(item)

>>> d

{'LV': 999, 'Iphone': 5999}

 

如果现在商场进了一批红塔山,通过dict可以快速添加字典里

>>> Hongtashan = ('Hongtashan',7)

>>> item

[('Iphone', 5999), ('LV', 199999), ('Hongtashan', 7)]

>>> d = dict(item)

>>> d

{'LV': 199999, 'Iphone': 5999, 'Hongtashan': 7}

 

通过dict方便对字典内容进行更新

 

 

4.2字典的基本操作

字典的基本行为在很多方面与序列类似

假设现在有个字典名为d

len(d)返回字典d中项(键-值对)的数量

d[]返回关联到键上的值

d[a]=b将值b关联到键a上

deld[k]删除键为k的项

k  in  d检查d中是否有含有键为k的项

 

>>> d

{'LV': 999, 'QiaQia': 9, 'Iphone': 5999}

>>> len(d)

3

>>> d['LV']

999

>>> d['LV']=1000

>>> d

{'LV': 1000, 'QiaQia': 9, 'Iphone': 5999}

>>> del d['LV']

>>> d

{'QiaQia': 9, 'Iphone': 5999}

>>> 'QiaQia' in d

True

 

 

字典在脚本中的使用

创建一个小程序,查询公司内部员工的个人信息

[root@shark163 ~]# vim people.py

#!/usr/bin/python

people = {

        'mv':{

                'phone': '2341',

                'addr': 'BeiJing'

        },

        'xiguatian': {

                'phone': '9102',

                'addr': 'HeBei'

        },

        'houyi':{

                'phone': '3158',

                'addr': 'ShanDong'

        },

        'libai':{

                'phone': '4556',

                'addr': 'ShanXi'

        }

}

 

[root@shark163 ~]# vim phone.py

#!/usr/bin/python

#coding=utf-8

import people

people = people.people

#变量名   模块名  模块中定义的字典名

labels = {

        'phone': 'phone number',

        'addr': 'address'

}

 

while True:

        name = raw_input('Name: ')

        while name in people:

                request = raw_input('Phone number (p) or address (a)?')

 

                if request == 'p' : key = 'phone'

                if request == 'a' : key = 'addr'

 

                print "%s's %s is %s." % \

                (name, labels[key], people[name][key])

                break

        else:

                YN = raw_input("The user does not exist,enter username again?(Y/N)")

                if YN == 'N' :

                        print "Program is stopping!!!"

                        break

                if YN == 'Y' : continue

 

执行结果:

[root@localhost ~]# python phone.py

Name: xiguatian

Phone number (p) or address (a)?a

xiguatian's address is HeBei.

Name: rn

The user does not exist,enter username again?(Y/N)N

Program is stopping!!!

 

 

6.3字典的方法

1)清空字典中的所有项clear

>>> example = {'zhongkui':1511,'houyi':1509,'xiguatian':1508,'libai':1506}

>>> example

{'zhongkui': 1511, 'libai': 1506, 'houyi': 1509, 'xiguatian': 1508}

>>> example.clear()

>>> example

{}

>>> example = {}

 

2)创建一个具有相同项的新字典copy

>>> y = example.copy()

>>> y

{'zhongkui': 1511, 'libai': 1506, 'houyi': 1509, 'xiguatian': 1508}

 

3)根据给定的键创建一个空值的字典froxiguatianeys

>>> {}.froxiguatianeys(['mv','yum'])

{'mv': None, 'yum': None}

 

默认的空值为None也可以用以下方法手动指定

>>> {}.froxiguatianeys(['mv','yum'],'(unknown)')

{'mv': '(unknown)', 'yum': '(unknown)'}

 

4)访问空值,不报错,返回None值get

>>> example = {'zhongkui':1511,'houyi':1509,'xiguatian':1508,'libai':1506}

>>> print example.get('mv')

None

 

5)检查字典中是否包含特定键has_key,表达式d.has_key(k)等同于k  in  d

>>> example

{'zhongkui': 1511, 'libai': 1506, 'houyi': 1509, 'xiguatian': 1508}

>>> example.has_key('mv')

False

 

6)以列表的方式返回字典中的所有项items

>>> example.items()

[('zhongkui', 1511), ('libai', 1506), ('houyi', 1509), ('xiguatian', 1508)]

 

与items相似的有iteritems方法,区别在于item返回的是一个列表,iteritems返回一个迭代器,方便对其调用

>>> it = y.iteritems()

>>> list(it)

[('zhongkui', 1509), ('libai', 1506), ('houyi', 1508), ('xiguatian', 1504)]

 

7)将字典中的键以列表方式返回keys,而iterkeys则返回针对键的迭代器

>>> example

{'zhongkui': 1511, 'libai': 1506, 'houyi': 1509, 'xiguatian': 1508}

>>> example.keys()

['zhongkui', 'libai', 'houyi', 'xiguatian']

>>> a = example.keys()

>>> list(a)

['zhongkui', 'libai', 'houyi', 'xiguatian']

 

8)获取给定键的值,并将此项从字典中移除pop

>>> example

{'zhongkui': 1511, 'libai': 1506, 'houyi': 1509, 'xiguatian': 1508}

>>> example.pop('zhongkui')

1511

>>> example

{'libai': 1506, 'houyi': 1509, 'xiguatian': 1508}

 

9)随机移除列表中的项popitem

>>> example.popitem()

('libai', 1506)

 

10)用一个字典更新另一个字典update

>>> example

{'xiguatian': 1508}

>>> shark = {'zhongkui':1511,'houyi':1509,'libai':1506}

>>> example.update(shark)

>>> example

{'zhongkui': 1511, 'libai': 1506, 'houyi': 1509, 'xiguatian': 1508}

 

11)以列表的方式返回字典中的值values,返回值的迭代器itervalues

>>> example.values()

[1511, 1506, 1509, 1508]

 

>>> a =example.itervalues()

>>> list(a)

[1511, 1506, 1509, 1508]

第三章 Python 的容器: 列表、元组、字典与集合的更多相关文章

  1. python开发技巧---列表、字典、集合值的过滤

    主要学习列表,字典,集合表达式的应用: 列表的解析式: 生成一个随机列表: In [4]: datalist = [randint(-10,10) for _ in range(10)] In [5] ...

  2. Day2 - Python基础2 列表、字典、集合

    Python之路,Day2 - Python基础2   本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一, ...

  3. Python初学笔记列表&元组&字典

    一.从键盘获取 1 print("请输入") 2 username = input("姓名:") 3 age = input("年龄:") ...

  4. python基础之02列表/元组/字典/set集合

    python中内置的数据类型有列表(list)元组(tuple)字典(directory). 1 list list是一种可变的有序的集合.来看一个list实例: #第一种方法: >>&g ...

  5. python语言(二)列表、字典、集合、文件读写、关系测试

    1.列表 list   代码 s = '王宇建,苏红,邹存才...' # 列表 数字 list l = ['王宇建','苏红','邹存才'] # 一维数组 二维数组 三维数组 # 0 1 2 # 索引 ...

  6. Python第三天 序列 数据类型 数值 字符串 列表 元组 字典

    Python第三天 序列  数据类型  数值  字符串  列表  元组  字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...

  7. Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式

    Python第三天 序列  5种数据类型  数值  字符串  列表  元组  字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell ...

  8. python中列表 元组 字典 集合的区别

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...

  9. **python中列表 元组 字典 集合

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...

随机推荐

  1. RHEL7 单独安装图形 X11

    RHEL7 默认是最小化安装(Minimal Install),没有图形界面, 我们应该选择Server with GUI.若已错过此步骤,我们采用以下方式补充安装GUI界面.

  2. ZOJ 3941 Kpop Music Party

    先把能合并的区间都合并起来. 考虑最裸的贪心策略,从左到右一段一段的取. 但是,这样会有错,错在没有考虑每段区间选取最后一个点. 因为N只有10,所以枚举一下哪些区间最后一个点会被选择,然后按照最裸的 ...

  3. Codeforces#363 Div2

    A题: 题意:给定一些数,给定一些往左走和往右走的操作,问是否能够相遇,如果相遇请求出相遇时间 分析:对于相邻两个数,如果大的往左,小的往右就能够相遇,否则不能相遇,在求出所有相遇当中的第一次相遇即可 ...

  4. Windwos下 php mysql apache 环境配置

    一.下载所需软件: 1.安装Windows组件: 安装Apache的前  必须安装  VC11 vcredist_x86.exe (64位请下载vcredist_x64.exe),选择时尽量选择英文版 ...

  5. js中,怎么解决cookie里面中文乱码问题

    呵呵,我查了百度和谷歌,都没找到解决方案,但是,最终直接结合两个函数就可以了,哈哈哈,开心ing function getCookie(name) { var prefix = name + &quo ...

  6. CoordinatorLayout学习笔记

    CoordinatorLayout是一个增强型的FrameLayout.它的作用有两个 作为一个布局的根布局 最为一个为子视图之间相互协调手势效果的一个协调布局 代码如下: <?xml vers ...

  7. C语言-if语句

    1.一般形式 if(表达式)表达式1 else 表达式2   :表达式成立(为真)则执行表达式1,否则执行表达式2. 适用范围:真假,对错,开关,对立面的条件 注意:如果if语句中只包括一条语句,可以 ...

  8. adapter中报错:Can't create handler inside thread that has not called Looper.prepare()

    http://stackoverflow.com/questions/9357513/cant-create-handler-inside-thread-that-has-not-called-loo ...

  9. ECshop中的session机制理解

    ECshop中的session机制理解     在网上找了发现都是来之一人之手,也没有用自己的话去解释,这里我就抛砖引玉,发表一下自己的意见,还希望能得到各界人士的指导批评! 此session机制不需 ...

  10. 安装pip工具

    Python 2.7.9+ and 3.4+ Good news! Python 3.4 (released March 2014) and Python 2.7.9 (released Decemb ...