列表是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. c++中冒号(:)的作用

    1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; } ; X ...

  2. win7 以管理员身份运行cmd, windows services 的创建和删除

    以 http 协议访问svn repository 搭建可用http访问的svn(windows) http://blog.csdn.net/yangyangrenren/article/detail ...

  3. iOS中"查看更多/收起"功能实现

    实现效果如图: 查看更多功能在很多app种都有应用,在这里简单的实现,介绍实现流程: 一个tableViewCell中包含一个collectionView,"查看更多"按钮是tab ...

  4. Linux在shell中df半天没反应

    问题描述:  df -hT 一直没反应,只能Ctrl+c中断此操作! 解决方法: 多是mount挂载远程服务,而远程服务已关闭,出于一直mount状态,df  -hT是查看本地挂载和远程挂载! df  ...

  5. 函数之局部变量和使用global语句

    局部变量当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的.这称为变量的 作用域 .所有变量的作用域是它们被定义的块,从它们的名称被定义 ...

  6. 14、手把手教你Extjs5(十四)模块字段和Grid列的定义[2]

    model和columns生成好了,下面要修改一下Module.js和Grid.js中的代码,使其能够协同工作. /** * 一个模块的主控界面的容器,用来安放各个模块控件以及协调他们之间的关系 */ ...

  7. CSS3 Media Queries 详解

    说起CSS3的新特性,就不得不提到 Media Queries .最近 Max Design 更新的一个泛读列表里,赫然就有关于 Media Queries 的文章.同时位列其中的也有前天我刚刚翻译的 ...

  8. STM32_IAP详解(有代码,有上位机)

    Iap,全名为in applacation programming,即在应用编程,与之相对应的叫做isp,in system programming,在系统编程,两者的不同是isp需要依靠烧写器在单片 ...

  9. Java琐碎

    final final只能用来保证原始数据类型的实例变量的不可变性,而无法用于引用类型的变量.如果一个引用类型的实例变量含有修饰符final,该实例变量的值(某个对象的引用)就永远无法改变了--它将永 ...

  10. RFID射频卡超市购物结算系统问题记录--写入卡片时,后台php无法操作数据库

    后台管理人员要给每件商品贴上RF卡作为唯一标识,所以要先给对应的RFID卡中写入响应的信息,我这里为了便于模拟演示只写入商品编号,价格,名称这几个字段,然后要把已经写入的商品上传后台,由后台写入数据库 ...