(七) Python列表与字典

    我们在之前已经使用过Python中的语句来储存信息,或是用名字来读取储存的信息。但是对于一组或是面对一堆信息呢?这时候我们就应该想到Python的另一种数据类型列表(list)和字典(dictionary),用这一类集合将一堆数据存储在一起,就可以一次性地进行某些处理。

    1.列表(list)

    比如说一个班级的学生姓名列表:

>>> print phoneNumbers
{'John': '555-1213'}
>>> classmates = ['David', 'Bob', 'Kate']
>>> print classmates
['David', 'Bob', 'Kate']

   形如 " 变量名 = ['元素','元素'.....  ] ",列表中的单个元素就叫做项或元素。中括号是代表起始和终点,各项之间用逗号隔开。

    注:在创建列表时,要是提前不知道列表有什么东西,最好还是先创建一个空列表,以便后面添加元素操作。例如:

>>> Family = []
>>> Family.append('Dad')
>>> print Family
['Dad']
>>> Family.append('Mom') # append()函数是把一个元素追加到列表的末尾。
>>> print Family
['Dad', 'Mom']

    Family.append()称为一个对象的操作,Family(变量名)作为对象,append()函数作为操作,用 " . "来标识对象和操作。


    在列表中,访问列表某个位置的元素可以用索引(index)方法。记住列表索引都是从0开始:

<pre class="plain" name="code">>>> Family = ['Dad', 'Mom', 'sister', 'brother']

>>> print Family[0]
Dad

>>> print Family[4]

Traceback (most recent call last):
  File "<pyshell#78>", line 1, in <module>
    print Family[4]
IndexError: list index out of range

>>> print Family[3]
brother
 

    上述的例子中,一共有4个元素,按照index方法应该是4,但是由于index是从0开始的,index最大值只能为3,超过就是越界错误。

    索引的有关操作:

    1.从索引中取一个或是多个元素:

>>> Family = ['Dad', 'Mom', 'sister', 'bother']

>>> print Family[2] #取到第三个元素(字符串类型)
sister

>>> print Family[0:2] #索引数之差为2,得到从列表起始到索引数差的元素(列表类型)
['Dad', 'Mom']

>>> print Family[ :2] #默认得到从列表起始元素到2之间的所有元素(列表类型)
['Dad', 'Mom']

>>> print Family[2: ] #默认得到从2到列表末尾的所有元素(列表类型)
['sister', 'brother']

>>> print Family[ : ] #默认得到整个列表的所有元素(列表类型)
['Dad', 'Mom', 'sister', 'brother']

     2.利用索引来修改列表元素:

>>> print Family
['Dad', 'Mom', 'sister', 'brother']

>>> Family[3] = 'baby'

>>> print Family
['Dad', 'Mom', 'sister', 'baby'] #只能修改元素列表的元素,不可以在元素列表中增加新的元素

     在元素列表中增加元素的方法有:

>>> print Family
['Dad', 'Mom', 'sister', 'baby']

>>> Family.append('Grandfather') #append()在列表末尾增加一个元素
>>> print Family
['Dad', 'Mom', 'sister', 'baby', 'Grandfather']

>>> Family.extend(['Grandmother', 'Aunt', 'Uncle'])#extend()在列表的末尾增加多个元素,注意圆括号中可以包含一个由中括号括起来的列表
>>> print Family
['Dad', 'Mom', 'sister', 'baby', 'Grandfather', 'Grandmother', 'Aunt', 'Uncle'] #在列表的某个位置插入一个元素,不一定在列表末尾

>>> Family.insert(3,'Maternal grandfather')
>>> print Family
['Dad', 'Mom', 'sister', 'Maternal grandfather', 'baby', 'Grandfather', 'Grandmother', 'Aunt', 'Uncle']

     在元素列表中删除元素的方法有:

>>> print Family
['Dad', 'Mom', 'sister', 'baby', 'Grandfather', 'Aunt', 'Uncle']


>>> Family.remove('Grandfather') #利用remove()删除任意的元素
>>> print Family
['Dad', 'Mom', 'sister', 'baby', 'Aunt', 'Uncle']

>>> del Family[4] #del()利用索引删除元素
>>> print Family
['Dad', 'Mom', 'sister', 'baby', 'Uncle']


>>> family = Family.pop(4) #pop()是将元素列表的末尾元素赋值给一个新的变量,原列表末尾的元素也会自动删除
>>> print family
Uncle

>>> print Family
['Dad', 'Mom', 'sister', 'baby']

     要查询某个元素是否在列表中,或是查找元素在列表中某个位置,只需使用 " in "关键字和index()方法。

>>> print Family
['Dad', 'Mom', 'sister', 'baby']

>>> 'Dad' in Family
True

>>> 'Uncle' in Family
False

>>> print Family.index('sister')
2

     关于元素列表排序:

>>> Numbers = ['2', '4', '3', '1', '5']

>>> Numbers.sort() #sort()方法让字母或是数字从小到大排序
>>> print Numbers
['1', '2', '3', '4', '5']


>>> Numbers.reverse() #reverse()方法让字母或是数字从大到小逆排序
>>> print Numbers
['5', '4', '3', '2', '1']
>>> print Numbers
['5', '4', '3', '2', '1']

>>> numbers = Numbers[ : ] #创建副本,不改变原列表(与sorted()方法相同)
>>> Numbers.sort()

>>> print Numbers
['1', '2', '3', '4', '5']

>>> print numbers
['5', '4', '3', '2', '1']


    还有一种有序列表称为tuple(元组类型),和list相似,不过tuple一旦初始化就不能修改,就因为tuple不易修改,因此代码更安全。以后能用tuple代替list的尽量使用。形如:

    Family = ('Dad', 'Mom', 'sister', 'brother'),此处使用的是圆括号,而不是中括号。


    2.字典

     字典的原理和我们平时要查某一个字的原理差不多,就是把字典从第一页往后翻,直到找到我们想要的字为止。这个翻字典动作和页码就是我们要关联的两个东西,一个叫做键(key),一个叫做值(value)。就像字典中每条目录都是对应着一个键和一个值。

>>> D = {'Kate':96, 'Bob':97, 'Mary':95} #首先变量名是键(key),然后是一个冒号,再接着是值(value)。

>>> D['Kate']
96
>>> print D
{'Bob': 97, 'Kate': 96, 'Mary': 95}


    列表和字典的相似点:

    1.列表和字典都可以包含任意类型,也包含多种类型集合的集合。(包含数字,字符串,对象或是其他集合)

    2.列表和字典都提供在具体范围内查找元素的方法。


    列表和字典的不同点:
    1.列表是有序的,当我们在列表元素中添加元素时,这些新加入的元素便会保持之前的顺序,我们还可以使用方法来进行排序。而字典是无序的,当我们向字典内添加元素时,在屏幕上显示出的顺序和添加时的不同。

    2.列表中使用的是索引查找,而字典使用的是键来访问条目。


    和list比较,dict有以下几个特点:

  1. 查找和插入的速度极快,不会随着key的增加而增加;
  2. 需要占用大量的内存,内存浪费多。

    而list有以下特点:

  1. 查找和插入的时间随着元素的增加而增加;
  2. 占用空间小,浪费内存很少。

    字典的操作方法:

       1.keys()和vaules()方法列出字典中的所有键和所有值:

>>> D = {'Kate':96, 'Bob':97, 'Mary':95 }

>>> D.keys()
['Bob', 'Kate', 'Mary']

>>> D.values()
[97, 96, 95]

       2.使用 " del " 删除一个条目:

>>> print D
{'Bob': 97, 'Kate': 96, 'Mary': 95}<pre class="plain" name="code">
>>> del D['Bob']

>>> print D
{'Kate': 96, 'Mary': 95}

 

       3.使用clear()清空字典,删除所有条目:

>>> D.clear()
>>> print D
{}

       4.使用 " in " 关键字查找某键是否在字典中:

>>> D = {'Kate':96, 'Bob':97, 'Mary':95}

>>> print D
{'Bob': 97, 'Kate': 96, 'Mary': 95}

>>> del D['Bob']

>>> print D
{'Kate': 96, 'Mary': 95}

>>> 'Bob' in D
False

>>> 'Mary' in D
True
     字典中要学习的东西还是比较多的,毕竟使用还是很广泛的。以后还是要好好学习,这样以后在代码中看到字典应该会熟悉一点。。。

.

  
  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值