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