列表是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. Java谜题——库谜题

    1.Java中的不可变对象和可变对象 (1)不可变类:当你获得这个类的实例的引用之后,你不可以改变这个实例的内容.比如:String,BigInteger,BigDecimal,还有基本数据类型的封装 ...

  2. 将USBASP改造成STK502编程器(转)

    源:将USBASP改造成STK502编程器 现在淘宝上还有不少USBasp或者USBisp的51/AVR编程器,它们使用了开源的USBasp硬件,以及PROGISP软件或者其它一些下载软件.其实我们可 ...

  3. 51nod1119(除法取模)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1119 题意:中文题诶- 思路:这题数据比较大直接暴力肯定是不 ...

  4. 170112、solr从服务器配置整合到项目实战

    整合网上资源后 100%可运行的配合步骤,部署在tomcat 为例. 一:下载solr,版本为5.2.1 地址:http://pan.baidu.com/s/1eRAdk3o 解压出来. 1.在解压的 ...

  5. NSURLRequest POST方式请求服务器示例

    http://lizhuang.iteye.com/blog/1833297 1.  准备阶段 NSString *urlString = [NSString stringWithFormat:@&q ...

  6. 友坚恒天.开发板(Cotex-A9 Exynos4412 开发板)

    友坚恒天.开发板 Cotex-A9 Exynos4412 开发板

  7. iOS开发中涉及的字体问题

    iOS中常见3种方法来控制字体,下面根据我在网上学习总结的内容发布(已完美避过所有坑,iOS8.4) 一.系统默认的设置字体方法(只对英文和数字生效的方法) 1.系统默认提供的字体主要是指UIFont ...

  8. ios 屏幕方向的设置

    ref: http://www.cnblogs.com/niit-soft-518/p/5611298.html 实际的项目需求.root是TabBarController,里面有4个navigati ...

  9. FastJson的用法

    一.简单数据的序列化 pubic class UserInfo implements Serializable{ private String name; private int age; publi ...

  10. mongodb学习(一)

    重点是踏出第一步: 1. 各种资料集合,mongodb的介绍,安装,破解...内容大同小异... http://www.cnblogs.com/kuochin/p/3599630.html;http: ...