引言:
我们之前学过整数,浮点数,字符串,今天带来的更具有包容性。
今天带来的是高级数据类型,包括列表,元组,集合和字典。根据他们特性不同,可以分为序列类型,集合类型,键值类型。
一,序列类型
1.1 列表类型
列表的标识是list。在英文中翻译为清单的意思,同理,在Python中,可以同样的理解。比如我们去超市购买了”梨子“,”苹果“,”香蕉“,如果我们用之前的知识,代码就是用3个变量,分别表示这3个物品:
item1="梨子"
item2="苹果"
item3="香蕉"
在编程中,最忌讳的就是重复性劳动,因此就引出列表的作用。
shopping_list = ["苹果","梨子","香蕉"]
print('今天我买了:')
for i in shopping_list:
print(i)
结果:
今天我买了:
苹果
梨子
香蕉
在上述第一行代码中,赋值的右边就是新认识的第一个数据类型---列表。列表的创建
注意:其中的数据项,可以是各种类型的数据(整数,浮点数,字符串)
假如,我突然想吃肉了,于是又买了肉,那么这个肉就需要假如这个例表中。用法是列表名.append(需要添加的数据项);
shopping_list.append("meat"),更多的如下:列表操作符
列表操作符
补充:两个列表连接在一起也可以用extend,用法是:list1.extend(list2),不过输出的时候,因为这种连接是在list1上直接修改的,所以输出print(list1)即可。
1.2 列表推导式
举一个简单的例子:将一个列表中的每一个元素都平方,输出新列表b
代码:
a=[1,2,3,4]
b=[]
for i in a:
b.append(i**2)
print(b)
结果:[1,4,9,16]
如果采用列表推导式,该怎么做呢“
a=[1,2,3,4]
b=[i**2 for i in a]
print(b)
这这里,列表式主要有两部分组成:
循环变量i**2
for循环 for i in a
除此之外,我们还可以在for循环后面添加一个if语句。
例如:用列表式输出10以内大于4的整数列表
a=[number for number in range(11) if number>4]
print(a)
结果:[5, 6, 7, 8, 9, 10]
1.3 元组类型
元组类型,英文单词是tuple。元组的创建和列表相似,但是元组创建之后不能够改变,也就意味着我们不能对元组进行增加,删除,拼接等操作。但是,我们可以提取其中的元素。因此,元组就适合保存一些“机密”数据,元组的创建
注意:列表用的方括号,元组是圆括号。
1.4 索引和切片
通常字符串,元组,列表都是有长度的,我们用len()来查看他们的长度
例如:
school="电子科技大学"
school_list=['张三',"李四",'王五',"马冬梅"]
print("字符串的长度是:{}".format(len(school)))
print("列表的长度是:{}".format(len(school_list)))
结果:
字符串的长度是:6
列表的长度是:4
有了长度,那么我们就可以提取其中更多元素了。
补充:字符串中的各个元素都有自己的编号,电的编号就是0,学的编号就是5。
列表也是,张三的编号就是0,马冬梅的编号就是3。
因此,我们就可以根据编号进行索引。
程序:
school="电子科技大学"
school_list=["张三","李四","王五","马冬梅"]
a=school[1]
b=school_list[3]
print("{}的第2个元素是:{}".format(school,a))
print("{}的第4个元素是:{}".format(school_list,b))
结果:
电子科技大学的第2个元素是:子
['张三', '李四', '王五', '马冬梅']的第4个元素是:马冬梅正负向索引
索引是指访问序列中单个元素,访问序列中连续的多个元素叫做切片。
例如:
student = ["张三", "李四", "王五", "李雷", "韩梅梅"]
print(student[1:3])
print(student[2:4])
print(student[2:])
print(student[:2])
print(student[:])
结果:
['李四', '王五']
['王五', '李雷']
['王五', '李雷', '韩梅梅']
['张三', '李四']
['张三', '李四', '王五', '李雷', '韩梅梅']
规律:
冒号左空,从头取数;
冒号右空;取到末尾;
冒号左右都不空,左数取,右数舍。
从上述也能够发现,索引取到得到是列表中的元素,而切片是截取了列表中的某个片段,所以结果还是列表。
1.5 循环遍历
列表的循环遍历和字符串类似:
student_list = ["张三", "李四", "王五", "李雷", "韩梅梅"]
for s in student_list:
print(s)
结果:
张三
李四
王五
李雷
韩梅梅
接下来,我们把循环遍历和索引结合起来。
school=["北京大学","清华大学","上海交通大学","复旦大学","浙江大学"]
for i in range(0,len(school)):
print("排名第{}的大学是:{}".format(i+1,school[i]))
结果:
排名第1的大学是:北京大学
排名第2的大学是:清华大学
排名第3的大学是:上海交通大学
排名第4的大学是:复旦大学
排名第5的大学是:浙江大学