Python内置的四种基本数据结构

本文用于学习Python内置的四种基本数据结构!!!

import numpy as np
'''Python3 数据结构    列表可以被修改,而字符串和元组不能'''

#表示一个列表,列表元素为字符串、数字、列表
ls = ['name','age',1,['python','c++']]

#获得列表元素的个数
print( len(ls) )

#获得列表指定索引的元素,可用负号从后往前依次类推 切片提取元素
print( ls[0:3] )
print( ls[-3:-1] )

#获得指定元素的索引,将一个元素作为方法的入口参数
print( ls.index('name') )

#获得子元素或子字符串在列表或字符串中出现的次数,第二、三个入口参数为搜索范围
print( ls.count('name') )

#将一个列表添加到此列表的结尾
ls = [1,2,3]
ls.append([1,2,3])#append方法改变了ls结构
print( ls )

#将一个列表的元素扩充到此列表
ls.extend([1,2,3])
print( ls )

#在指定索引位置插入元素或列表
ls.insert(1, 'hobby')
print( ls )

#逆向排序列表中的元素
ls.reverse()
print( ls )

#复制列表
ls2 = ls.copy()
print( ls2 )
ls2=ls[:]
print( ls2 )

#直接删除指定元素
ls.remove('hobby')
print( ls )

#删除列表索引对应元素
ls.pop(1)
print( ls )

#删除列表中的所有元素
ls.clear()
print( ls )

#列表是可变对象,可对内部内容变化操作,对数字元素的排序
ls = [3,2,1]
ls.sort()
print( ls )

#提取列表元素,切片操作
print( ls[:3] )
print( ls[1:3] )
print( ls[-2:-1] )

#将多维列表元素展开到一维列表中
ls=[[1,2],["yu","yu"]]
ls = [j for i in ls for j in i]
print( ls )

#首先将列表结构数组化,然后将数据展开到一个数组中
ls = [[1,2],[3,4]]
arr = np.array(ls)
arr.flatten()
print( arr )

#首先将列表结构矩阵化
Mat=np.mat(ls)
#再将此矩阵展开转化为数组
print( Mat.flatten().A )
print(np.shape(Mat.flatten().A))
#获得此矩阵展开后的第一维数组
print( Mat.flatten().A[0] )

'''将列表当作栈(stack)使用,后进先出,使用append()方法将元素添加到栈顶,
使用不指定索引的pop()方法将元素从栈顶释放出来'''
stack = [1,2,3]
stack.pop()
print( stack )

'''将列表当作队列(queue)使用,先进先出'''
from collections import deque
queue = deque(['name','age'])
queue.append('weight')
queue.popleft()
print( queue )

'''列表生成式,在列表内写表达式,从最基本的方法到一行代码
range(1,11,2) 左闭右开,第三个元素为切片操作的间隔大小,python2使用xrange()'''
print( list(range(1,11,2)) )

ls = []
for i in range(1,11,2):
    ls.append(i*i)
print( ls )

ls = [i*i for i in list(range(1,11))]
print(ls)

#使用if作为过滤器
print( [i*i for i in range(1,11) if i%2==0] )

print( [m+n for m in "ABC" for n in 'XYZ'] )
print( [i+j for i,j in zip("ABC","XYZ")] )

#使用复杂表达式或嵌套函数,i为小数点之后的位数 round()获得指定小数点位数的商
print( round(355/133,3) )
ls = [str(round(355/113,i)) for i in range(1,6)]
print(ls)

#将3*2的矩阵列表转换为2*3的列表
ls = [[1,2],[3,4],[5,6]]
print( [[row[i] for row in ls] for i in range(len(ls[0]))] )

ls2=[]
for i in range(2):
    ls2.append([row[i] for row in ls])
print( ls2 )

#转化列表元素数据类型
ls = ['1','2','3']
print( [int(i) for i in ls] )
print( [float(i) for i in ls] )
ls = [1,2,3]
print( [str(i) for i in ls] )

#两个列表的元素的操作
print( [i*0.2+j*0.8 for i,j in zip( [1,2,3],[4,5,6] )] )

'''使用del语句可以从一个列表中依索引而不是值来删除一个元素,可以删除一个切割'''
#删除索引为0的元素
del ls[0]
#删除索引为2-3的元素
del ls[0:2]
#删除所有元素
del ls[:]
print(ls)

#删除实体变量
del ls
#print( ls )

#字符串是不可变对象,只能使用替换方法
Str = 'yuyu'
print( Str.replace('l','L') )


'''
元组由若干逗号分隔的值组成
'''
tp = tuple('name')
tp = ('name','age',('weight'))
for t in tp:
   print(t)
#将元组转化为列表
print( list(tp) )


'''
序列是以连续的整数为索引,但是字典则以关键字为索引,关键字是任意不可变类型,通常为字符串或数值
同一个字典内,关键字必须互不相同
'''
dic={'name':'liyu','age':23}
print( dict(name='liyu',age=23) )
#dict()方法对元组列表构建字典
print( dict([('name','liyu'),('age',23)]) )
#利用推导式创建字典
print( {key:key**2 for key in (1,2)} )

#获得键对应的值
print( dic.get('name') )
print( dic['name'] )

#判断键
if 'name' in dic:
    print( dic['name'] )
else:
    print( 'not found' )

#插入新的键值对
dic['weight']=68

#删除键值
dic.pop('weight')
#del dic['weight']

#将键\值以列表的形式获得
print( list(dic.keys()) )
print( list(dic.values()) )

#迭代输出键 迭代输出值 迭代输出键和值
for key in dic.keys():
    print(key)
for value in dic.values():
    print(value)
for k,v in dic.items():
    print(k,v)


'''
集合是一个元素无序且不重复的集合,基本功能用于消除重复元素或者集合之间的关系测试
'''
se = {'li','yu','li'}
print(se)

se2 = set('liyuLiYu')
se3 = set('liyuName')
print(se2)
print(se3)

#2中的字母,但不在3中
print( se2-se3 )
#在2或3中的字母
print( se2|se3 )
#在2和3中的字母
print( se2&se3 )
#在2或3中的字母,但不能同时在2和3中 异或
print( se2^se3 )

#集合的推导式
print( {x for x in 'liyuname' if x not in 'ly'} )

#将其他数据结构,如列表转化为集合
se=set([1,1,2,3])
se.add(4)
se.remove(4)
print( se )

参考资料:

1. 廖雪峰《Python2.7教程》


猜你喜欢

转载自blog.csdn.net/attitude_yu/article/details/80000351
今日推荐