python标准数据类型有Number(数字),String(字符串 ,Boolean(布尔值),List(列表),Tuple(元组),Set(集合),Dictionary(字典) Number、String与Boolean在上一章节我们已详细讲解,这一章我们主要讲解剩下部分

- list

Python内置的一种数据类型是list,list是一种有序结合。例如:

language = ['C','Java','python','NodeJs']
print(language)  #打印列表language
print(type(language))  #type()函数可获取该数据的数据类型,并打印出来
print(len(language))  #len()函数可获取list元素的个数,并打印出来

打印结果为:

['C', 'Java', 'python', 'NodeJs']
<class 'list'>
4

如果我们想要访问list的每一个位置的元素,记得索引是从0开始,索引的最大值为len(list) - 1

language = ['C','Java','python','NodeJs']
print(language[0])  #获取list的第一个值
print(language[1])  #获取list的第二个值
print(language[2])  #获取list的第三个值
print(language[3])  #获取list的第四个值
print(language[len(language) - 1])  #获取list的最后一个值,等同于print(language[3])
print(language[-1])  #获取list的最后一个值,等同于print(language[3]),该索引会直接获取list的最后一个值
#以此类推可以获取list倒数第二个值,倒数第三个值,也不可超过list个数上线

打印为:

C
Java
python
NodeJs
NodeJs
NodeJs

由于list是一个可变有序表,所以我们也可对list进行追加插入删除查询等相关操作。例如:

num = [1 , 2 , 3]
print(num)
num.append(4)  #通过append()函数,在num末尾进行追加
print(num)
num.insert(0,7) #通过insert()函数,把元素插入到指定位置。比如在索引号为0的位置追加数字 7
print(num)
num.pop()  #通过pop()函数,删除list末尾的元素
print(num)
num.pop(0)  #我们也可通过pop(i),i为索引位置,进行指定删除某个元素
print(num)
num[0] = "替换成功"  #我们也可把某个元素替换成别的值,一个list内可包含多种不同数据类型的值
print(num)

打印为:

[1, 2, 3]
[1, 2, 3, 4]
[7, 1, 2, 3, 4]
[7, 1, 2, 3]
[1, 2, 3]
['替换成功', 2, 3]

list还有很多自带的函数,下面把一些常用地函数一一列给大家

language = ['C','Java','python','NodeJs']
num = [1 , 2 , 3 , 1]
list2 = language + num   #列表组合
print(list2)  #打印列表组合list2
print(max(num))  #使用max()函数获取list num的最大值,并打印出来
print(min(num))  #使用min()函数获取list num的最小值,并打印出来
print(num.count(1))  #查看元素1在list num中出现过的次数
num.reverse()  #使list num进行倒序排列
print(num)
num.sort()  #使list num进行升序排列
print(num)
num.clear()  #清除列表中的所有数据
print(num)
num.extend([5,6,7]) #向list num末尾一次性追加多个值
print(num)
print(5 in num)  #判断5是否存在于list num中
print(1 in num)  #判断1是否存在于list num中

打印为:

['C', 'Java', 'python', 'NodeJs', 1, 2, 3, 1]
3
1
2
[1, 3, 2, 1]
[1, 1, 2, 3]
[]
[5, 6, 7]
True
False
二维数组:
list1 = [1,2,[11,12,12]]
print(list1)  #打印二维数组list1
print(list1[2])  #打印二维数组的第三个值,也就是list1中所包含的list
print(list1[2][0])  #打印所包含的list里的第一个值

打印为:

[1, 2, [11, 12, 12]]
[11, 12, 12]
11

- tuple

另一种有序列表叫做元组,即tuple。tuple与list很相似,但是tuple是不可变的列表,一旦初始化就不可修改,与list相比较为安全

定义tuple:
language = ('C','Java','python','NodeJs') #初始化一个tuple
print(language)
top = ()  #初始化一个为空的tuple
print(top)
top2 = (1)  #但如果初始化的tuple只有一个值,则打印出来的则只为tuple内的元素,这就违背了tuple的定义,所以我们为了杜绝这种情况,当tuple内只有一个元素时,应该采用以下写法
print(top2)
top3 = (1,)
print(top3)

打印为:

('C', 'Java', 'python', 'NodeJs')
()
1
(1,)
其他操作

由于tuple初始化成功后不可改变,所以不可以进行修改。只能进行查询与取值,但如果tuple内存在list,list内的值可以更改的。

language = ('C','Java','python','NodeJs')
print(language[0])  #根据索引查询tuple内的第一个值
print(language[3])  #根据索引查询tuple内的第四个值
print(language[-1])  #根据索引查询tuple内的最后一个值
print('C' in language)  #判断字符串'C'是否在tuple内
del language  #删除tuple
#注意!删除tuple即代表不存在,而不像list清空元素,因为tuple定义后即不可更改

打印为:

C
NodeJs
NodeJs
True

- dict

Python内置了字典dictdict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快查找速度。 dict特性:使用键值对(key-value)存储,value 是我们要存储查找的数据key是我们要找到数据的钥匙key必须是唯一不可变的对象。

grade = {"tom":50,"boby":60,"grad":99}  #定义dict
print(grade)  #输出dict
print(grade["boby"])  #根据key进行索引查询,若所查询的dict中并没有这个key,则系统会报错
grade["boby"] = 0  #更改key为boby的值
print(grade["boby"])
#而为了判断dict是否拥有这个key,有以下两种方法
print("boby" in grade)  #若不存在,则会返回False
print(grade.get("boby"))  #若不存在,则会返回None
print(grade.get("boby",-1))  #若不存在,也可返回自己所定义的value

打印为:

{'tom': 50, 'boby': 60, 'grad': 99}
60
0
True
0
0

由于dict内部存放的顺序和key放入的顺序是没有关系的,所以插入、删除、查询一切都是根据dict内的key的值。

grade = {"tom":50,"boby":60,"grad":99}  #定义dict
grade['join'] = 88  #向grade中添加数据,key为join,value为88
print(grade)
grade.pop('boby')  #删除key为boby的这一组数据
print(grade)
# 遍历,循环出的所有的value值
for i in grade.values():
    print(i)
grade.clear()  #清空dict
del grade  #删除dict

打印为:

{'tom': 50, 'boby': 60, 'grad': 99, 'join': 88}
{'tom': 50, 'grad': 99, 'join': 88}
50
99
88

- set

setdict类似,也是一组key集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

由于key必须唯一的且不可变的,所以set中所有的值也都要有这种特性的

在创建set需要一个list或者tuple或者dict作为输入集合,重复元素在set中可以重复添加但是会被自动过滤

s1 = set([1,2,3])  #以list作为一个输入集合创建set
print(s1)
s2 = set((1,2,3,2,1))  #以tuple作为一个输入集合创建set,重复元素会被自动忽略
print(s2)
s3 = set({1:"one",2:"two",3:"three"})  #以dict作为一个输入集合创建set,value会被自动忽略
print(s3)

打印为:

{1, 2, 3}
{1, 2, 3}
{1, 2, 3}

其他操作:

s1 = set([1,2,3,4])  #以list作为一个输入集合创建set
s1.add(5)  #添加元素5
s1.add(1)  #添加元素1,但由于存在1所以此添加忽略
s1.add((7,8,9)) #添加元组,因为元组不可变,列表、字典均可变所以不可添加
print(s1)

#打碎插入
s2 = set([1,2,3])
s2.update([4,5,6])  #打碎插入,插入整个List
s2.update((6,7,8))  #打碎插入,插入整个Tuple
s2.update("daab")   #打碎插入,插入整个字符串
print(s2)
s2.remove(1)  #删除s2中值为1的key
print(s2)

a1 = s1 & s2  #a1为s1与s2所有的交集
print(a1)
a2 = s1 | s2  #a2为s1与s2所有的并集
print(a2)

打印为

{1, 2, 3, 4, 5, (7, 8, 9)}
{1, 2, 3, 4, 5, 6, 7, 8, 'a', 'd', 'b'}
{2, 3, 4, 5, 6, 7, 8, 'a', 'd', 'b'}
{2, 3, 4, 5}
{1, 2, 3, 4, 5, 6, 7, 8, (7, 8, 9), 'b', 'a', 'd'}