列表是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. GPRS优点介绍及GPRS上网相关知识(转)

    源:http://blog.chinaunix.net/uid-20745340-id-1878732.html 单片机微控制器以其体积小.功耗低.使用方便等特点,广泛应用于各种工业.民用的嵌入式系统 ...

  2. IWorkSpace接口介绍

    IWorkspace接口提供访问工作空间的通用属性和方法,如它的连接属性,以及包含的数据集的方法. 如何打开一个数据库  要打开一个数据库,也就意味着我们要得到那个工作空间,而工作空间是一个普通类,也 ...

  3. Javascript 浏览器探测

    1.根据浏览器的性能 var is = { ff: window.globalStorage, ie: document.all && !window.opera, ie6: !win ...

  4. Hibernate3提供的属性的延迟加载功能

    Hibernate3增强了对实体属性的延迟加载功能,要实现这个功能,分两个步骤 1.在hbm配置文件上对某个property设置lazy=true   <property name=" ...

  5. 转 [ javascript面向对象技术

    以下文章来自iteye,作者是 sdcyst ,个人主页 http://www.iteye.com/topic/288813 类变量/类方法/实例变量/实例方法先补充一下以前写过的方法:在javasc ...

  6. 【安卓手机通用】android adb shell 命令大全

    浏览:3116 | 更新:2013-10-17 17:05 | 标签:安卓 android 一.[什么是shell] Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命 ...

  7. xcode磁盘大清理

     转---Xcode磁盘空间大清理 我的设备是Macbook Air 13’ Mid 2011,128G SSD.最近开始有些存储压力了,用Clean My Mac清理一部分旧文件后,决定对Xcode ...

  8. NIO 入门基础

    输入/输出:概念性描述 I/O 简介 I/O ? 或者输入/输出 ? 指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口.它对于任何计算机系统都非常关键,因而所有 I/O 的主体实际上是 ...

  9. UIImageView控件

    UIImageView是用于显示图像的,在iOS开发中,我们无需专门去写什么代码,不需要检查设备的类型,只需要把1x.2x.3x的图像添加到项目中,图像视图会自动的在正确的时间加载正确的图像. (1) ...

  10. S3C2440外部中断系统详解

    个中断源的请求.提供这些中断源的是内部外设,如DMA控制器.UART.IIC等等.在这些中断源中,UARTn.AC97和EINTn中断对于中断控制器而言是“或”关系.任意一个中断发生都会触发总中断 当 ...