python基础之列表,元组,字典

列表(list):

 

列表的特点:

列表是python中的一种数据类型,有序并且可以随时添加或删除其中的元素。   

比如:members = ['zhangsir','laowang','xiaoming']  

members 就是一个列表,其中的'zhangsir','laowang','xiaoming' 都是列表中的元素,列表需要用[] 表示   

 

len() 函数常用来获取长度,现在来获取一下列表names的长度:

>>> print (members)
['zhangsir', 'laowang', 'xiaoming']
>>> len (members)
3
>>>   

 

通过索引(下标)来访问列表中的元素:索引(下标)是从0开始的,还用刚才的列表members来举例:

>>> members[0]
'zhangsir'
>>> members[1]
'laowang'
>>> members[2]
'xiaoming'
>>> members[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>>   

 

第一个元素的索引是0,第二个元素的索引是1,依次类推,最后一个元素的索引是len (members) -1   

也可以倒着取列表中的元素: 

>>> members[-1]  #这样就直接取到了最后一个元素。
'xiaoming'  

 

 

列表切片:   

>>> members [0:2]  #取索引为0的元素到索引为1的元素,不包括2,索引取到结尾的数前面的一个。
['zhangsir', 'laowang']   

  

>>> members[0:3]  #下面两种方式都是取索引为0到索引为2的元素
['zhangsir', 'laowang', 'xiaoming']

>>> members[:3]
['zhangsir', 'laowang', 'xiaoming']    

 


>>> members[:]  #取全部的元素
['zhangsir', 'laowang', 'xiaoming']
>>>

 

>>> members[:-1]  #取出从开始到倒数第二个的所有元素,不包括最后一个
['zhangsir', 'laowang']
>>>

>>> members[0::2]  # 2表示每隔一个元素就取一个,也有减1的意思, members[0::3] 就是每隔两个取一个元素。
['zhangsir', 'xiaoming']
>>>

>>> members[::2]   #同上
['zhangsir', 'xiaoming']

 

 

列表的方法:  

1,追加  append  

>>> members.append('zhanglong')
>>> members.append('zhaohu')  

>>> print (members)
['zhangsir', 'laowang', 'xiaoming', 'zhanglong', 'zhaohu']
>>>    

这种直接追加的方法,是把新元素加到了原列表的后面。   

 

2,插入 insert   

>>> members
['zhangsir', 'laowang', 'xiaoming', 'zhanglong', 'zhaohu']
>>> members.insert(2,'niumowang')  #在索引为2的位置插入一个元素niumowang

>>> members
['zhangsir', 'laowang', 'niumowang', 'xiaoming', 'zhanglong', 'zhaohu']
>>>

 

3,修改  

>>> members[2]="hulijing"   #把索引为2的元素替换为hulijing
>>> members
['zhangsir', 'laowang', 'hulijing', 'xiaoming', 'zhanglong', 'zhaohu']
>>>

 

 

4,删除 (del remove pop)

####pop方法删除列表中的元素并返回删除的值########

>>> members
['zhangsir', 'laowang', 'hulijing', 'xiaoming', 'zhanglong', 'zhaohu']
>>> members.pop()  #pop 默认会删除最后一个元素
'zhaohu'
>>> members
['zhangsir', 'laowang', 'hulijing', 'xiaoming', 'zhanglong']
>>>   

>>> members.pop(3)  #删除索引为3的元素
'xiaoming'
>>> members
['zhangsir', 'laowang', 'hulijing', 'zhanglong']
>>>

 ####remove########    

>>> members
['zhangsir', 'laowang', 'hulijing', 'zhanglong']
>>> members.remove('zhanglong')  #指定删除的元素名
>>> members
['zhangsir', 'laowang', 'hulijing']
>>>

 

########del#######   

>>> members
['zhangsir', 'laowang', 'hulijing']
>>> del members[1]   #删除索引为1的元素,如果不加索引直接del members 就把这个列表都删了。
>>> members
['zhangsir', 'hulijing']
>>>

 

 

5,扩展 extend  

>>> members
['zhangsir', 'hulijing']
>>> birds=['xiaoniao','daniao']
>>> members.extend(birds)  #把birds列表合并进members列表中
>>> members
['zhangsir', 'hulijing', 'xiaoniao', 'daniao']
>>>

 

6,统计 count  

>>> members
['zhangsir', 'hulijing', 'xiaoniao', 'daniao', 'zhangsir']
>>> members.count('zhangsir')   #统计zhangsir这个元素在列表中出现的次数

2
>>>

 

7,排序 sort  

>>> members
['zhangsir', 'hulijing', 'xiaoniao', 'daniao', 'zhangsir']
>>> members.sort()  #以每个元素的第一个字母的顺序进行排序,注意:python3里面不同类型的不能排序,比如有数字,需要将数字加个引号,当作字符串再排序,数字会排在前面。
>>> members
['daniao', 'hulijing', 'xiaoniao', 'zhangsir', 'zhangsir']
>>>  

 

8,反转 reverse  

>>> members
['daniao', 'hulijing', 'xiaoniao', 'zhangsir', 'zhangsir']
>>> members.reverse()  #将列表中的元素倒过来
>>> members
['zhangsir', 'zhangsir', 'xiaoniao', 'hulijing', 'daniao']

 

9,获取索引 index  

>>> members
[1, 'daniao', 'hulijing', 'xiaoniao', 'zhangsir', 'zhangsir']
>>> members.index('xiaoniao')  #找到元素'xiaoniao'的索引,注意:如果有多个'xiaoniao' 只返回第一个的索引 
3
>>>     

 

########################     

 

元组 (tuple): 

 

元组的特点:  

元组和列表很像,也是有序的,但是元组一旦创建了就不能修改,元组也叫只读列表,用()表示。因为不能修改,所以元组的方法自然就少了很多 ,只有count和index两个方法。  

>>> numbers=(5000,6000,7000,6000)
>>> numbers.count(6000)
2
>>> numbers.index(7000)
2
>>> numbers.append(8888)   #元组没有append方法

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
>>>

特别注意:  因为()既可以表示元组,又可以表示数学中的小括号,因此在python中规定,当元组只有一个元素时,后面必须加一个逗号用来区分

>>> num2=(1)
>>> num2
1
>>> num2=(1,)  #加了逗号,才是元组类型
>>> num2
(1,)
>>>

##########################     

 

字典(dict):

字典的特点: 

字典是无序的,key必须是唯一的,但是值可以相同,也就是说多个key可以对应同一个值。

>>> databases = {'name1':"zhangxiaoqiang",'name2':"chaoshaopeng",'name3':"lijie",'name4':"xuebaoku"}
>>> databases   #看到下面返回的'name4' 出现在第一个,这就是因为字典是无序的。
{'name4': 'xuebaoku', 'name3': 'lijie', 'name1': 'zhangxiaoqiang', 'name2': 'chaoshaopeng'}
>>>    

 

字典的方法: 

1,增加   

>>> databases['name5']="airuike"   #给key赋值
>>> databases
{'name4': 'xuebaoku', 'name5': 'airuike', 'name3': 'lijie', 'name1': 'zhangxiaoqiang', 'name2': 'chaoshaopeng'}
>>>    

2,修改  

>>> databases['name5']="madajiasijia"   #直接给这个key赋一个新的值就行
>>> databases
{'name4': 'xuebaoku', 'name5': 'madajiasijia', 'name3': 'lijie', 'name1': 'zhangxiaoqiang', 'name2': 'chaoshaopeng'}
>>>    

3,删除(pop,del)

>>> databases.pop('name5')   #删除key为'name5'的键值对
'madajiasijia'
>>> databases
{'name4': 'xuebaoku', 'name3': 'lijie', 'name1': 'zhangxiaoqiang', 'name2': 'chaoshaopeng'}
>>>

 

>>> del databases['name4']  #删除key为'name4'的键值对
>>> databases
{'name3': 'lijie', 'name1': 'zhangxiaoqiang', 'name2': 'chaoshaopeng'}
>>>

 

4,查找   (in 判断成员身份)

>>> 'name4' in databases   #name4 这个key不在字典中返回False
False
>>> 'name3' in databases   #name3 这个key在字典中返回True
True  

 

#根据key查找对应的值

>>> databases.get('name3')   #方法一,用get,推荐这种方法
'lijie'
>>> databases['name3']   #方法二,直接取
'lijie'
>>>
>>> databases.get('name4') #当key不存在时,get方法不返回东西
>>> databases['name4']   #这种方法在key不存在时会报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'name4'
>>>

 

5,多级字典嵌套及操作   

country = {
"中国":{'capital':["北京","历史悠久的传奇城市"]},
"美国":{'capital':["华盛顿","美帝的大本营"]},
"韩国":{'capital':["首尔","棒子思密达"]}
}

 

追加内容

>>> country["韩国"]['capital'][1] += "美女全是整容的"   #在返回结果后面加一句 "美女全是整容的",并且要保存到字典中,如果不加等号是不会保存在字典中的。
>>> print (country["韩国"]['capital'])
['首尔', '棒子思密达美女全是整容的']
>>> country
{'中国': {'capital': ['北京', '历史悠久的传奇城市']}, '韩国': {'capital': ['首尔', '棒子思密达美女全是整容的']}, '美国': {'capital': ['华盛顿', '美帝的大本营']}}

  

显示全部的key和值   

>>> country.keys()
dict_keys(['中国', '韩国', '美国'])    #只显示第一层的key
>>> country.values()      #也只显示第一层的值
dict_values([{'capital': ['北京', '历史悠久的传奇城市']}, {'capital': ['首尔啊', '棒子思密达美女全是整容的']}, {'capital': ['华盛顿', '美帝的大本营']}])   

 

字典的合并 update   

>>> country
{'中国': {'capital': ['北京', '历史悠久的传奇城市']}, '韩国': {'capital': ['首尔啊', '棒子思密达美女全是整容的']}, '美国': {'capital': ['华盛顿', '美帝的大本营']}}
>>> num = {'a':1000,'b':2000,"美国":3000}
>>> num
{'b': 2000, 'a': 1000, '美国': 3000}
>>> country.update(num)   #如果有相同的key,会更新对应的值,因为key必须是唯一的
>>> country
{'b': 2000, '中国': {'capital': ['北京', '历史悠久的传奇城市']}, '韩国': {'capital': ['首尔啊', '棒子思密达美女全是整容的']}, 'a': 1000, '美国': 3000}
>>>

 

遍历字典  items() 

>>> databases
{'name4': 'xuebaoku', 'name3': 'lijie', 'name1': 'zhangxiaoqiang', 'name2': 'chaoshaopeng'}
>>> databases.items()  #会把字典转为列表
dict_items([('name4', 'xuebaoku'), ('name3', 'lijie'), ('name1', 'zhangxiaoqiang'), ('name2', 'chaoshaopeng')])
>>>

 

循环字典:   

>>> databases
{'name4': 'xuebaoku', 'name3': 'lijie', 'name1': 'zhangxiaoqiang', 'name2': 'chaoshaopeng'}

方法一:(推荐)
>>> for a in databases:print (a,databases[a]) 

name4 xuebaoku
name3 lijie
name1 zhangxiaoqiang
name2 chaoshaopeng
>>>

方法二:#这种方法会先把dict转成list, 数据量大的时候最好别用这种方法

>>> for k,v in databases.items():print (k,v)

name4 xuebaoku
name3 lijie
name1 zhangxiaoqiang
name2 chaoshaopeng

 

posted @ 2016-08-04 17:24  疯狂的大叔  阅读(218)  评论(0编辑  收藏  举报