初识 python - 序列类型

目录

序列类型

1、序列对象

2、列表类型

1)、创建列表对象的两种方法

2)、访问列表

3)、列表更新 

4)、列表的操作符

5)、嵌套列表

6)、列表中的函数与方法

7)、List[] 与 list[:] 的区别(★)

8)、综合示例

3、元组类型

4、字典类型

1)、访问字典

2)、使用示例

3)、同 列表 、元组的比较

5、集合

· 使用示例

6、数据类型转换

 

 


序列类型

1、序列对象

“序列” 是程序设计中经常用到的数据存储方式。在其他程序设计语言中,“序列”通常被称为”数组“,用于存储相关数据项的数据结构。Python 语言中本身并没有数组的概念,但在 Numpy 中提供了数组对象,也弥补的Python自身的不足。

序列与数组的区别:数组是提供了能够存放同一数据类型且连续的内存空间 ;序列虽然是连续的存储空间,但可以存放不同数据类型,也可以理解为更加 “高级的数组”

常用序列对象: 列表 List (可变数据类型),元组 Tuple(不可变数据类型),集合 Sets(可变数据类型),字典 Dictionary(可变数据类型),字符串 String(不可变),range( ) 。

 

2、列表类型

List(列表) 是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现,它支持字符,数字,字符串甚至可以包含列表(即嵌套);列表用 " [ ] " 标识,是 python 最通用的复合数据类型。

1)、创建列表对象的两种方法

(1)、默认方法:列表对象 = [元素1, 元素2, 元素3, ….. , 元素N, ] 

初识 python - 序列类型_第1张图片

(2)、使用 range()内置函数 :列表对象 = list( range (stop) ) ,python3 list() 函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表(range 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表),返回的变量类型为列表range() 函数可创建一个整数列表,一般用在 for 循环中 :range (start, stop[, step]) ,start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5); stop: 计数到 stop 结束,但不包括 stop,如:range(0, 5) 是[0, 1, 2, 3, 4] ,没有5 ;step:步长,默认为1 ,如:range(0, 5) 等价于 range(0, 5, 1) 。

初识 python - 序列类型_第2张图片

 

2)、访问列表

列表中值的获取可以用到  [头下标 : 尾下标 : 步长]  ,就可以截取相应的列表:从左到右下标索引默认 0 开始,从右到左下标索引默认 -1 开始,下标可以为空表示取到头或尾。

初识 python - 序列类型_第3张图片

 

3)、列表更新 

所谓的更新指的是对列表元素的 重新赋值、删除、添加等相关操作。

初识 python - 序列类型_第4张图片

 

4)、列表的操作符

在前面介绍字符串中已经了解过 + 和 * 号的作用,列表用法与其类似,同时也有 len( ) in 等操作。如

 

初识 python - 序列类型_第5张图片

 

5)、嵌套列表

列表中可以放置各种类型的数据,也可以存放列表类型,可理解为高级的多维数组。

初识 python - 序列类型_第6张图片

 

6)、列表中的函数与方法

为了更好地操作列表对象,Python也提供了很多的函数:len(list) : 获取列表元素的个数;max(list) : 获取列表中的最大值;min(list) : 获取列表中的最小值;list(seq) : 将元组对象转换成列表对象。

列表也提供了大量的方法.append(obj) :在列表末尾添加一个元素;.count(obj) : 统计某个元素在列表中出现的次数;.index(obj) : 从列表中找出某个值第一个匹配的索引位置;.insert(index, obj) : 向指定位置前序添加一个元素 ;.remove(obj) : 移除一个指定的元素;.reverse() : 反向列表中的元素;.sort() : 对列表进行排序 。

 

7)、List[] 与 list[:] 的区别(★)

“ [ ] ” 标识是典型的引用操作传址操作 ;“ [:] ”标识是典型的赋值操作传值操作 。

初识 python - 序列类型_第7张图片

 

8)、综合示例

# 使用一对 [] 来定义列表
list1 = [1,'xxs',"你好"]
print(type(list1))      #检测一下 list1 的类型
print(list1)

# 使用 range 函数 快速生成列表
list2 = list(range(0,10))   #range 返回的是 需要转换成列表类型
print(list2)

range(0,5)
print(range(0,5))  #检测下 range 返回类型
print(list(range(5)))    #转换后输出

# 下标输出列表值
print(list1[2])

# 列表的遍历
for i in list1 :
    print(i)

print('\n')

# list切片
list3 = list(range(10))
print(list3)
print(list3[0:5])   # 不包括上界值
print(list3[0:9:2]) #按 步长 切片
print(list3[1::2])  #第二个参数可以不写,默认为全长

# list 是可变数据类型,可追加,可删除新元素
list3.append(10)    #在最后位置增加
print('追加列表元素后:',list3)
list3.insert(6,666)
print('插入列表元素后:',list3)
list3.remove(list3[6])  #删除第六个位置的列表元素
list3.remove(6) #删除列表中值为 6 的元素
print('删除列表元素后:',list3)

print('\n')

# + / *
list4 = list(range(0,5))
list5 = list(range(5,10))
print('list4= ',list4)
print('list5= ',list5)
print('list4 + list5 = ',list4+list5)
print('list4 * 2 = ',list4*2)

# list 嵌套列表
list4.append(list(range(0,5)))
list5.append(list4)
print('list4 嵌套 :',list4)
print('list5 嵌套 list4 :',list5)

print('指定嵌套元素输出:')
print(list5[5]) #由于第六个元素是列表元素,故将全部输出
print(list5[5][5])  #打印出来的是 list5 中第六个元素 list4 中的第六个元素
print(list5[5][5][1])   #输出的是最内层的 1

list6 = [list4,list5]
print('list4 、 list5 整体列表嵌套 :',list6)

print('\n')

#打散插入
list7 = list("abcdefg")
print('字符串打散插入:',list7)

#一些函数
list8 = list(range(0,10))
print(list8)
print(len(list8))
print(max(list8))   #注意比较的元素需要保持一致,同为字符也是可以比较
print(min(list7))

# 排序
list9 = [3,1,6,2,8,7,5,9,0]
list9.reverse()     # 反序
print(list9)

list9.sort()    #作用于列表本身,默认为升序
print(list9)
list9.sort(reverse=True)    #降序
print(list9)

# 深复制 :新申请一块新的内存,将复制的列表赋值到新空间中
list10 = list(range(0,10))
list11 = list10
list11[0] = 11
print(list10)   #现在改了 list11 的值后 list10 也会改变

list12 = list10[:]      #深复制
list12[0] = 111
print(list12)
print(list10)


应该算是比较全面地去解释了列表的使用,值得掌握。

 

3、元组类型

Tuple(元组)类似于List(列表),但元组不能二次赋值(元组内的元素不允许更新),相当于只读列表。元组用“ ( ) "标识,内部元素用逗号隔开。语法:元组对象名称 = ( 元素1, 元素2, ……, 元素N

元组与列表的所有操作基本类似,唯一不一样的地方是,元组的元素不允许被修改

示例:

# 元组定义符号 ()
tuple1 = (1,'xxs',"张三")
print(tuple1)
print(tuple1[1])
# 遍历
for i in tuple1 :
    print(i)

# tuple[0] = 2 #元组不可修改

# 其他的元组定义方式
tuple2 = tuple('abcdefg')
print(tuple2)
tuple3 = tuple(range(0,10))
print(tuple3)
#切片
print(tuple2[0:5])
print(tuple3[:])    # 默认为0,默认为最大


# 特别说明,定义一个只有一个元素的元组
list1 = [1]  #列表定义一个元素,正确
tuple4 = (1)    #错误,构不成 tuple
print(type(tuple4))

tuple5 = (1,)   #正确定义单个元素
print(type(tuple5))
print(tuple5)

#几个函数
tuple6 = (1,3,1,4,5,2,1,3)
tuple6.count(1) #统计元组中 1 出现的次数
print(tuple6.count(1))
tuple6.index(3) #查看元组中 3 出现第一次时的索引
print(tuple6.index(3))

#tuple 也可以嵌套
tuple7 = ((1,2,3),('x','x','s'))
print(tuple7)
print(tuple7[0])
print(tuple7[0][0])

 

 

4、字典类型

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。字典当中的元素是通过键来存取的,而不是通过偏移存取。字典用“{ }”标识。字典索引(key) 和它对应的 值value 组成,是一个典型的 “k-v值 ” 数据结构。

语法:字典对象名称 = { } ;字典对象名称 = { key1 : value1, key2 : value2, …. , keyN : valueN }

 

1)、访问字典

k-v结构一般情况下在操作访问的时候都会使用 key 索引进行每个元素的读取操作。语法:字典对象名称[ key ]  表示访问 key对应的value值 ;字典对象名称.keys 表示访问当前字典所有key索引键 ;字典对象名称.values 表示访问当前字典所有 values 值 。

# 字典不能通过下标来访问!!                    快捷键 Ctrl + / 单行注释

dictionary1 = {"name":"xxs" , "class":"三"}
print (dictionary1["class"])
# print(dictionary1[1])   错误的

m={}
m['name'] = "sss"   # 需要先声明 m 的类型才可这样写
m[0] = "xxx"
print (m['name'])

print(m.keys()) #输出字典的全部 键
print(dictionary1.values())     # 输出字典的全部 值

 

2)、使用示例

# 定义字典{}
dict1 = {'no1':{'name':'zhangsan', 'age':20, 'sex':'male'},'no2':{'name':'lisi', 'age':30, 'sex':'male'} }

# 访问字典,也是用类似数组下标索引的方式
print(dict1['no1'])
print(dict1['no1']['name'])

# 怎么来得到字典所有的key
for key in dict1.keys():
    print(key)

# 怎么得到所有的value
print(dict1.values())

# 通过get key来得到key对应的value
print(dict1.get('no2'))

# items返回以key和value组成的一个元组列表
print(dict1.items())

# update :当碰到相同 键 时,会用新的 键值 去替代旧的
dict2 = {'no2': 11111, 'no3':22222}
dict1.update(dict2)
print(dict1)

# pop会删除元素而且会返回对应key的value
value = dict1.pop('no1')
print(value)
print(dict1)

 

3)、同 列表 、元组的比较

从承载数据类型的结构角度看:python的数据类型分为数字类型和非数字类型。数字类型包括:整型、长整型、浮点型和复数型;非数字类型包括:字符串、列表、元组和字典。

共同点:都可以使用切片(截取)、链接(+)、重复(*)、取值(a[ ])等相关运算 ;截取方式相同:名称 [头下标 : 尾下标 ] ;下标是从0开始算起,可以是正数或者负数,下标为空则表示取到头或者尾 ;开始截取时,包含了下边界,而截取到最大范围不包括上边界

不同点:列表 可以直接赋值,元组不可以赋值 ,字典按照 dict [k] = v 的方式赋值 。

 

5、集合

集合是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素。可以用大括号({})创建集合,注意:如果要创建一个空集合,你必须用 set() 而不是 {} ;后者创建一个空的字典。

初识 python - 序列类型_第8张图片

· 使用示例

# 定义集合
seta = {1,2,1,3,4,1,3,5,6,7,7}    # 空的一对大括弧定义的是字典,而不是集合
setnull = set()                   # 定义空集合
print(seta)                       # 集合内部的元素不可以重复

# 集合是可变的
seta.add(8)
print(seta)

# 删集合元素
# seta.remove(9)  # remove删除的时候,如果集合里不存在这个元素,会报异常
seta.discard(1)   #
print(seta)

# 集合的交集
setb = set(range(5))
print(seta & setb ) #输出的是交集结果

# 集合的更新
setb.update(list(range(4, 11)))
print(setb)

 

6、数据类型转换

当需要对数据内置的类型进行转换,就需要了解 python 数据类型的转换知识 。使用各种转换函数,转换函数返回一个新的对象,表示转换的值。语法格式:转换后变量 = 转换函数名称(待转换数据或变量)。

主要类型转换函数参考表

int(x [,base]) x转换为一个整数
long(x [,base] ) x转换为一个长整数
float(x) x转换到一个浮点数
str(x) 将对象 x 转换为字符串
tuple(s) 将序列 s 转换为一个元组
list(s) 将序列 s 转换为一个列表
dict(d) 创建一个字典。d 必须是一个序列 (key,value)元组。
chr(x) 将一个整数转换为一个字符
ord(x) 将一个字符转换为它的整数值
 

你可能感兴趣的:(Python)