python基础知识-列表/元组/字典

学习目标:

--常用的数据结构及对应方法

--三种控制流的使用
--字符串的常用处理方法
--正则表达式的使用
--自定义函数的编写

#开启Python学习之路
print ("Hello, Python!")

Hello World!

#print括号里面使用单引号或者双引号都可以
print("Hello Python world!")
print('Hello Python world!')

Hello Python world!
Hello Python world!

#需要打印出双引号
print('"Hello Python world!"')

#需要打印出单引号
print("'Hello Python world!'")

"Hello Python world!"
'Hello Python world!'

1、数据结构及方法

列表、元组、字典都是存储数据的容器

列表

列表用[ ]构造
列表可存放数值、字符串和其他数据结构内容
列表是一种序列,每个列表元素按顺序存入,且有自己的位置
列表是一种可变类型的数据结构,可增、删、改

1.1列表元素的获取

通过索引方式获取列表元素,位置索引从0开始

1.1.1 正向单索引
list1 = ['张三','男',30,'广东','本科','已婚',['身高178','体重70']]
#取出第一个元素
print(list1[0])
#取出第四个元素
print(list1[3])
#取出最后一个元素
print(list1[6])
#取出“体重72”这个值
print(list1[6][1])

张三
广东
['身高178', '体重70']
体重70

1.1.2 负向单索引

从右到左,获取一个元素,即list[-n]

# 取出最后一个元素
print(list1[-1])
# 取出“身高178”这个值
print(list1[-1][0])
# 取出倒数第三个元素
print(list1[-3])

['身高178', '体重70']
身高178
本科

1.1.3 切片索引

按照固定步长,连续取出多个元素,即[stat:end:step],step默认为1
注意:end位置的元素取不到,左闭右开

list2 = ['江苏','安徽','浙江','上海','山东','山西','湖南','湖北']
# 取出“浙江”至“山西”四个元素
print(list2[2:6])
# 取出“安徽”、“上海”、“山西”三个元素
print(list2[1:6:2])
# 取出最后三个元素
print(list2[5:8])
# 取出倒数两个元素
print(list2[-3:-1])

['浙江', '上海', '山东', '山西']
['安徽', '上海', '山西']
['山西','湖南','湖北']
['山西', '湖南']

1.1.4 无限索引

不限制起始或者终止或者两个位置都不限定,用[::step]表示

# 取出头三个元素
print(list2[:3])
# 取出最后三个元素
print(list2[-3:])
# 取出所有元素
print(list2[::])
# 取出奇数位置的元素
print(list2[::2])

['江苏', '安徽', '浙江']
['山西', '湖南', '湖北']
['江苏', '安徽', '浙江', '上海', '山东', '山西', '湖南', '湖北']
['江苏', '浙江', '山东', '湖南']

1.2 列表的方法

1.2.1 列表元素的增加

append:是列表特有的方法,往列表尾部增加元素,每次只能增加一个元素
extend:往列表尾部增加多个元素,需要以列表的的方式传递
insert:在列表的指定位置插入元素,需要传递索引和新元素,索引指的是插入的位置

第一种--append方法

list3 = [1,10,100,1000,10000]
# 在列表末尾添加数字2
list3.append(2)
print(list3)

[1, 10, 100, 1000, 10000, 2]

第二种--extend方法

# 在列表末尾添加20,200,2000,20000四个值
list3.extend([20,200,2000,20000])
print(list3)

[1, 10, 100, 1000, 10000, 2, 20, 200, 2000, 20000]

第三种--insert方法

# 在数字10后面增加11这个数字
list3.insert(2,11)
print(list3)
# 在10000后面插入['a','b','c']
list3.insert(6,['a','b','c'])
print(list3)

[1, 10, 11, 100, 1000, 10000, 2, 20, 200, 2000, 20000]
[1, 10, 11, 100, 1000, 10000, ['a', 'b', 'c'], 2, 20, 200, 2000, 20000]

1.2.2 列表元素的删除

pop:默认删除末尾的最后一个元素,如需删除指定某个元素,需传递索引
remove:删除首次出现的指定值
clear:清空,全部删除

第一种--pop删除方法

# 删除list3中20000这个元素
list3.pop()
print(list3)
# 删除list3中11这个元素
list3.pop(2)
print(list3)

[1, 10, 11, 100, 1000, 10000, ['a', 'b', 'c'], 2, 20, 200, 2000]
[1, 10, 100, 1000, 10000, ['a', 'b', 'c'], 2, 20, 200, 2000]

第二种--remove删除方法

# 删除list3中所有元素
list3.clear()
print(list3)

[1, 10, 100, 1000, 10000, 2, 20, 200, 2000]

第三种--clear删除方法

# 删除list3中所有元素
list3.clear()
print(list3)

[]

1.2.3 列表元素的修改

通过索引获取错误元素,然后用新值取而代之

list4 = ['洗衣机','冰响','电视机','电脑','空调']
# 将“冰响”修改为“冰箱”
print(list4[1])
list4[1] = '冰箱'
print(list4)

冰响
['洗衣机', '冰箱', '电视机', '电脑', '空调']

1.2.4 列表元素的其他方法

计数count、查询位置index、逆转reverse、排序sort(只能对同质数据进行排序)

list5 = [7,3,9,11,4,6,10,3,7,4,4,3,6,3]
# 计算列表中元素3的个数
print(list5.count(3))
# 找出元素6所在的位置
print(list5.index(6))
# 列表元素的颠倒
list5.reverse()
print(list5)
# 列表元素的降序
list5.sort(reverse=True)

元组

元组用( )构造
元组可存放数值、字符串和其他数据结构内容
元组是一种序列,每个列表元素按顺序存入,且有自己的位置
元组不是一种可变类型的数据结构,存储数据的不可变容器,不可增、删、改

元组的方法

计数count、查询位置index

t = ('a','d','z','a','d','c','a')
# 计数
print(t.count('a'))
# 元素位置
print(t.index('c'))

3
5

字典

字典是常用的数据结构,与json格式相似,用{ }表示
字典是以键值对的形式存储数据,即key:value
字典不是序列,无法通过位置索引获取,只能通过键索引实现
字典与列表一样,是一种可变类型的数据结构,存储数据的可变容器,不可增、删、改
注意:键在字典种是唯一的,不能重复,否则无法取数,字符型的键要用引号,值可以是单个值,也可以是列表、元组或字典

3.1 字典数据的获取

dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']}
# 打印字典
print(dict1)
# 取出年龄
print(dict1['年龄'])
# 取出子女中的儿子姓名
print(dict1['子女']['儿子'])
# 取出兴趣中的游泳
print(dict1['兴趣'][1])

{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌']}
33
张四
游泳

3.2 字典元素的增加

setdefault:该方法接受两个参数,用( )和逗号表示
update:该方法接受的是一个字典对象,用{ }和冒号表示
键索引方法:具体索引的赋值

# 往字典dict1中增加户籍信息
dict1.setdefault('户籍','合肥')
print(dict1)
# 增加学历信息
dict1.update({'学历':'硕士'})
print(dict1)
# 增加身高信息
dict1['身高'] = 178
print(dict1)

{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌'], '户籍': '合肥'}
{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌'], '户籍': '合肥', '学历': '硕士'}
{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌'], '户籍': '合肥', '学历': '硕士', '身高': 178}

3.3 字典元素的删除

pop:在列表种默认删除末尾的最后一个元素,但在字典种必须指定某个元素,需传递索引
popitem:删除字典中的任意一个元素
clear:清空,全部删除

# 删除字典中的户籍信息
dict1.pop('户籍')
print(dict1)
# 删除字典中女儿的姓名
dict1['子女'].pop('女儿')
print(dict1)
# 删除字典中的任意一个元素
dict1.popitem()
print(dict1)
# 清空字典元素
dict1.clear()
print(dict1)

{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌'], '学历': '硕士', '身高': 178}
{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四'}, '兴趣': ['踢球', '游泳', '唱歌'], '学历': '硕士', '身高': 178}
{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四'}, '兴趣': ['踢球', '游泳', '唱歌'], '学历': '硕士'}
{}

3.4 字典元素的修改

update:该方法接受的是一个字典对象,用{ }和冒号表示
键索引方法:具体索引的赋值

dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']}
# 将性别改为女
dict1.update({'性别':'女'})
print(dict1)
# 将年龄改为35
dict1['年龄'] = 35
print(dict1)
# 将兴趣中的唱歌改为跳舞
dict1['兴趣'][2] ='跳舞'
print(dict1)

{'姓名': '张三', '年龄': 33, '性别': '女', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌']}
{'姓名': '张三', '年龄': 35, '性别': '女', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌']}
{'姓名': '张三', '年龄': 35, '性别': '女', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '跳舞']}

3.5 字典的其他方法

用get方法取出对应键的值,没有该键则不报错
用keys方法取出所有键的值
用values方法取出所有值
用items方法取出所有键值对

dict2 = {'电影':['三傻大闹宝莱坞','大话西游之大圣娶亲','疯狂动物城'], '导演':['拉吉库马尔·希拉尼','刘镇伟','拜伦·霍华德 '], '评分':[9.1,9.2,9.2]}
# 取出键'评分'所对应的值
print(dict2.get('评分'))
# 取出字典中的所有键
print(dict2.keys())
# 取出字典中的所有值
print(dict2.values())
# 取出字典中的所有键值对
print(dict2.items())

[9.1, 9.2, 9.2]
dict_keys(['电影', '导演', '评分'])
dict_values([['三傻大闹宝莱坞', '大话西游之大圣娶亲', '疯狂动物城'], ['拉吉库马尔·希拉尼', '刘镇伟', '拜伦·霍华德 '], [9.1, 9.2, 9.2]])
dict_items([('电影', ['三傻大闹宝莱坞', '大话西游之大圣娶亲', '疯狂动物城']), ('导演', ['拉吉库马尔·希拉尼', '刘镇伟', '拜伦·霍华德 ']), ('评分', [9.1, 9.2, 9.2])])

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容