简介
介绍Pthon中的基本数据结构及其数据存储及使用。
本部分包括以下内容:
- 列表
- 元组
- 字符串
- 字典
- 集合
- 序列
1.列表
列表是有顺序的集合,没有固定的大小,能够保存任意数任意类型的Python对象。语法为[元素1,元素2,…, 元素n]
[ ]:中括号把所有元素括起来
,: 逗号用于元素之间的间隔
2.列表的创建
- 例1:创建普通列表
x=['Mondy','Tuesday','wedenesday','Thusday','Thursday','Friday']
print(x,type(x))
x=[2,3,4,5,6,7]
print(x,type(x))
- 例2:利用range()函数来数列列表
x=list(range(10)) #得到0-9,10个整数
print(x,type(x))
x = list(range(1, 11, 2)) #0-9中的奇数
print(x,type(x))
x = list(range(10, 1, -2)) #10-1中的偶数-倒序
print(x, type(x))
# [10, 8, 6, 4, 2] <class 'list'>
- 例3:推导式创建列表列表
x=[0]*5 #扩展为5个0元素的列表
print(x,type(x))
x = [0 for i in range(5)] #扩展为5个0元素的列表
print(x, type(x))
x = [i for i in range(10)] #用推导式代替list函数转换range() 的结果
print(x, type(x))
x = [i for i in range(1, 10, 2)]# 改变range 产生数列的步长
print(x, type(x))
x = [i for i in range(10, 1, -2)] #range 采用倒序产生数列
print(x, type(x))
x = [i ** 2 for i in range(1, 10)] #range 产生的数列作为平方项
print(x, type(x))
x = [i for i in range(100) if (i % 2) != 0 and (i % 3) == 0]#0-100之间是3的倍数,但不是2的倍数
print(x, type(x))
[0, 0, 0, 0, 0] <class ‘list’>
[0, 0, 0, 0, 0] <class ‘list’>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] <class ‘list’>
[1, 3, 5, 7, 9] <class ‘list’>
[10, 8, 6, 4, 2] <class ‘list’>
[1, 4, 9, 16, 25, 36, 49, 64, 81] <class ‘list’>
[3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99] <class ‘list’>
列表中可以存储对象, 也可以是指向对象的指针。
[1,3,4],实际有3个指针和3个整数对象
x=[a]*4 , 是创建4个指list对象的引用。
x = ['c'] * 3 #创建有3个'c'的列表
print(x,type(x))
a = [x] * 4 #创建4个指向x列表对象的元素
print(a, type(a))
[‘c’, ‘c’, ‘c’] <class ‘list’>
[[‘c’, ‘c’, ‘c’], [‘c’, ‘c’, ‘c’], [‘c’, ‘c’, ‘c’], [‘c’, ‘c’, ‘c’]] <class ‘list’>
- 例4:混合列表创建
混合列表,即列表中元素有多种数据类型
mix=[1,'table','4.56,['a','c','b']] #列表mix数据有4种类型
print(mix,type(mix)
3.向列表中添加元素
list.append(obj)在列表末尾添加新的对象,只接受一个参数,参数可以是任何数类型,被添加的元素在list中保持着原结构类型。
- 例1:加入一个数据元素
x=[1,2,3,4]
x.append(5)
print(x)
[1, 2, 3, 4, 5] <class ‘list’>
- 例2:加入一个列表元素
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.append(['Thursday', 'Sunday'])
print(x,len(x))
[‘Monday’, ‘Tuesday’, ‘Wednesday’, ‘Thursday’, ‘Friday’, [‘Thursday’, ‘Sunday’]] 6
除了lilst.append方法外,还有list.extend(seq)方法,可以在列表末尾一次追加另一个序列中的多个值(用新列扩展原来的列表)
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.extend(['Thursday', 'Sunday'])
print(x)
[‘Monday’, ‘Tuesday’, ‘Wednesday’, ‘Thursday’, ‘Friday’, ‘Thursday’, ‘Sunday’]
可以用来对两个列表的合成。
append:将原对象添加到列表末尾
extend:将原对象的拆开为元素添加到列表末尾。
4.删除列表中元素
例1:使用list.remove(obj)方法移除列表中匹配的元素。
x=['Ali','Tencent','Bidu']
y=x.remove('Tencent') #弹出’Tencent‘
例2:按指定的索引值弹出列表中对应的元素。
x=['Ali','Tencent','Bidu']
y=x.pop(0) # 默认弹出第一项
print(y) # Baidu
print(x) # ['Ali', 'Tencet']
x=['Ali','Tencet','Bidu']
y=x.pop() # 默认弹出最后一项
print(y) # Baidu
print(x) # ['Ali', 'Tencent']
x=['Ali','Tencent','Baidu']
y=x.pop(-1) # 弹出最后一项
print(y) # Baidu 被弹出项
print(x) #['Ali', 'Tencet'] --剩余列表项
x=['Ali','Tencent','Bidu']
y=x.pop(-2)
print(y) # Tencet 被弹出项
print(x) # ['Ali', 'Bidu'] --剩余列表项
例3:使用del语句删除多个元素。
x=['Ali','Tencent','Bidu']
del x[0:3] # 一次删除 x[0] x[1] x[2] 三个元素
print(x) # []
索引值规律:从左向右依次为0,1,2…从右向左[…-3,-2,-1]
5.获取列表中元素
例1:通过索引值获取列表中的单个元素
x=['Ali','Tencent','Bidu',['Uited States', 'Google']]
t1=x[0] # 得到第一个元素'Ali'
print(t1)
t2=x[-1] # 得到最后一个元素['United States']
print(t2)
例2:使用切片的方式一次获取多个元素
x=['Ali','Tencent','Bidu',['Uited States', 'Google']]
print( x[:] ) #获取列表中的所有元素
t1=x[1:] # 获取指标从1开始往后列表所有的元素
print(t1) # ['Tencent', 'Bidu', ['Uited States', 'Google']]
t2=x[-2:] # 获取-2指标开始往前所有的元素
print(t2) # ['Ali', 'Tencent']
t2=x[1:3 ] # 获取指标从1开始到3之前的元素(不包括指标3对应的元素)
print(t2) # ['Ali', 'Tencent']
x=['Ali','Tencent','Bidu',['Uited States', 'Google']]
t2=x[-3:-1] #指标-3到-1对应的元素(不包括指标-1对应的元素)。注这里指标要升序,不能写成[-1:-3]
print(t2) # ['Tencent', 'Bidu']
例3:浅拷贝与深拷贝
list1 = [123, 456, 789, 213]
list2 = list1 # list2与list1 指向同一个列表对象
list3 = list1[:] # list3与list1指向不同的列表对象
print(id(list1),id(list2),id(list3)) # 3101950469896 3101950469896 3101967351752
# list1,与list2的对象ID相同,而 list3 与 list1所指列表对象不同,只是列表对象的值相同。
print(list2) # [123, 456, 789, 213]
print(list3) # [123, 456, 789, 213]
# 对list1列表元素进行排序,那么list2与其所指对象相同,输出也被排序。list3与lis1所指对象不同,未排序。
list1.sort()
print(list2) # [123, 213, 456, 789] # 排序
print(list3) # [123, 456, 789, 213] # 未排序
6.列表常用操作符
- 等号==: 两个列表完全相同返回True,否则为False
- 连接符+:首尾连接两个列表
- 重复运算符*:重复复制连接
- 成员运算符in,not in :
list1=['TianChi','Python']
list2=['TianChi','Java']
print(list1==list2) # False
print(list1+list2) #['TianChi', 'Python', 'TianChi', 'Java']
print(list1*3)#['TianChi', 'Python', 'TianChi', 'Python', 'TianChi', 'Python']
7.列表的其他方法
- list.count(obj):统计某元素在列表中出现的次数。
list1=['TianChi','Python','TianChi','Java']
print(list1.count('TianChi')) # 2
- list.index(x[,start[,end]]) :从列表中找出某个值第一个匹配项的索引位置
list1=['TianChi','Python','TianChi','Java']
print(list1.index('TianChi')) # 0
- list.reverse() 对列表中元素进行反向排序,无返回值
list.sort(key=None, reverse=False) 对原列表进行排序。
list1=['TianChi','Python','TianChi','Java']
list1.reverse() # list1列表进行倒序
print(list1) #['Java', 'TianChi', 'Python', 'TianChi']
- list.sort(key=None, reverse=False) 对原列表进行排序,无返回值。
# 获取列表的第二个元素
def takeSecond(elem):
return elem[1]
x = [(2, 2), (3, 4), (4, 1), (1, 3)]
x.sort(key=takeSecond)
print(x) # [(4, 1), (2, 2), (1, 3), (3, 4)] ;按第2个元素排序
x.sort(key=lambda a: a[0])
print(x)
# [(1, 3), (2, 2), (3, 4), (4, 1)] #按第1 个元素排序
注:Python 的小练习题
http://www.practicepython.org/solution/2014/12/25/23-file-overlap-solutions.html
Python的在线运行库
https://repl.it/languages/python3
本文介绍了Python中的基本数据结构之一——列表,包括列表的创建、添加元素、删除元素、获取元素、常用操作符和其他方法。通过示例详细解析了如何操作列表,并提供了在线实践资源。
532

被折叠的 条评论
为什么被折叠?



