python小白数据结构之序列基础

python基本的数据结构

Python3中有六个标准的数据类型:Number(数字),String(字符串),List(列表),Tuple(元组),Set(集合),Dictionary(字典)。

下面介绍List,Tuple的数据结构。

1. List(列表)

1.1序列的特点:

Python中一个很基本的数据结构是序列,Python中有6个序列的内置类型,但最常见的是列表和元组。序列都可以进行的操作包括索引,切片,加,减,乘和检查元素,所以下面在列表中所描述的很多方法在元组中也同样适用。

1.2列表的特点:

列表是一个长度不固定,可以随意增添元素的Python序列对象,与下面将要介绍的元组做以区别。列表中的元素可以是不同的类型的数据,且一个数据可以在列表中重复多次。比如[10, 10, 30, 'haoocker']就是一个列表。

1.3列表的创建:

  1. 创建空元素:
    1. 法一:list1 = []
    2. 法二:使用内建函数:list = list()
  2. 创建有元素的列表:
    1. 法一:list1 = [30,40,'str']
    2. 法二:sqe = ('fool',50,'bar') list1 = list(sqe)使用内建函数list参数应该是任意序列或者迭代器
  3. list函数常用在数据处理中实体化迭代器或生成器:
gen = range(10)
list1 = list(gen) 
#list为:[0,1,2,3,4,5,6,7,8,9]

1.4列表元素的增加:

  1. list.append(obj)表示在列表list1的末尾添加新的对象元素
  2. list.insert(index,obj)表示在列表list1的特定的位置插入对象元素

1.5列表元素的删除:

  1. list.pop([index = -1])默认移除列表中的最后一个元素(如果不加参数的话)如果有参数就会移除指定位置的值,并且返回该元素的值。
  2. del list1[2]表示删除list1的第二个元素
  3. list.remove(obj)表示移除列表中某个值的第一个匹配项
  4. list.clear()表示清空一个列表中的所有元素

1.6列表元素的修改:

直接使用list[index]=obj,比如list1[3] = 34表示将list1的元素修改成为34

1.7列表元素访问和切片:

  1. list.index(obj)从列表中找出第一个与对象所匹配的索引位置,并返回
  2. list[index]直接根据索引访问列表元素
  3. 列表的切片(截取)也适用于其他类型的序列:
    1. 切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片到哪里结束,第三个数(冒号之后)表示切片间隔数。如果不指定第一个数,Python就从序列首开始。如果没有指定第二个数,则Python会停止在序列尾。注意,返回的序列从开始位置开始 ,刚好在 结束 位置之前结束。即开始位置是包含在序列切片中的,而结束位置被排斥在切片外。即区间是左闭右开
    2. list[1:3]返回从位置1开始,包括位置2,但是停止在位置3的一个序列切片,因此返回一个含有两个项目的切片。类似地,shoplist[:]返回整个序列的拷贝。shoplist[::3]返回位置3,位置6,位置9…的序列切片。
    3. 可以参考一篇文章:彻底搞懂Python切片操作

1.8列表的基本操作:

  1. 加操作:[1, 2, 3] + [4, 5, 6]结果为[1, 2, 3, 4, 5, 6]
  2. 乘操作:['Hi!'] * 4结果为['Hi!', 'Hi!', 'Hi!', 'Hi!']
  3. 遍历和迭代for x in [1, 2, 3]: print(x, end=" ")结果:1,2,3

1.9列表的排序

  1. 参考文章:Python list sort()方法
  2. 其中sort()函数的key参数为function,比如可以根据长度排序则key=len
  3. 当一个list的元素也是list的话可以指定list的某个字段做为关键字进行排序,需要用到lambda表达式,起到一个函数速写的作用,允许在代码内嵌入一个函数的定义:python3排序 sorted(key=lambda)
  4. sort和sorted以及对lambda的解释可以参考:Python的sort函数和sorted、lambda和cmp
print(sorted(list2, key=lambda y: len(y[1])))
#将按照list2中list元素的第二个字段的长度进行排序,默认是升序

1.10列表的复制

  1. =不是赋值,如果a指向一个对象,然后你赋值 b = a ,那么两个变量指向同一个对象:此时b相当于是a的别名
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True
  1. 使用list.copy()函数进行复制
>>> a = [1, 2, 3]
>>> b = a.copy()
>>> b is a
false

2. Tuple(元组)

2.1元组的特点:

元组是一个固定长度的不可改变的Python序列对象,因此一旦创建之后它的元素是不可增加、删除和修改的,与列表类似它可以承载一组不同类型的数据,比如('haoocker','mike',11,13,23)这就是一个元组。

2.2元组的创建:

  1. 创建空元组:
    1. 法一: tup1 = ()
    2. 法二:tup1 = tuple()
  2. 创建只有一个元素对象的元组`
    1. 法一:tup1 = (50,)这里必须要加逗号,否则tup1被当做是整型
    2. 法二: tup1 = 50,
    3. 法三:`tup1 = tuple([50])
  3. 创建一般有元素对象的元组:tup1 = ('haoocker','mike',11,13,23)同上依旧有法二和法三,这里就不再举例了。

2.3元组的删除:

因为元组中的值是不可删除的,但是可以使用del语句来删除整个元组
del tup1
删除元组之后该元组就不能被访问和输出了。

2.4元组的访问:

元组的访问和列表元素的访问很大程度上是相似的,也是使用下标索引来访问元组中的值

tup1= (1, 2, 3, 4, 5, 6, 7 )
print ("tup1[1:5]: ", tup1[1:5])

2.5元组的基本操作:

总结

元组和列表的很多操作同样适用于其他的序列数据结构,还是得要在实践中多尝试和使用。

猜你喜欢

转载自www.cnblogs.com/haoocker/p/12546071.html
今日推荐