Python-数据类型-03.序列-列表和元组

Python-数据类型-序列-列表和元组

1.序列-sequence

1.1.序列定义

  • 序列是一组有顺序的元素的集合(其实是是对象的集合,后期会引入“对象”这个概念)
  • 序列包含列表和元组

1.2.序列特点

  • 1)基本的数据类型,都可以作为序列的元素,各个元素由逗号分隔
  • 2)可以由一种或多种元素构成,也可以没有任何元素,空列表,空元组
  • 3)构成序列的元素可以是另一个序列

1.3.序列分类-2种

  • 1)列表(list):使用中括号"[]"定义,列表中的的各个元素可以变更
  • 2)元组(tuple):或者成为定值表,使用小括号"()"定义,元祖中的元素不可变更

2.列表-list

2.1.列表的创建

# 在[]内用逗号分隔,可以存放n个任意类型的值

names = ["aaa","bbb","ccc","ddd","eee"]
或者
names = list(["aaa","bbb","ccc","ddd","eee"])
print("打印列表:", names)
print(names, type(names))
--------------------------
打印列表: ['aaa', 'bbb', 'ccc', 'ddd', 'eee']
['aaa', 'bbb', 'ccc', 'ddd', 'eee'] <class 'list'>
--------------------------
  • 实例演示
# 一个序列作为另一个序列的元素
s1 = [1,[3,4,5]]

# 定义一个空序列
s2 = []

2.2.列表特点

2.3.列表的切片(列表中元素的引用)

列表中对象的索引

1)切片时顾头不顾尾(以正数开头不计算最右边的)
2)左边从0开始越往右越大
3)右边从-1开始,越往左越小
  • 实例演示:
names = ['aaa', 'bbb', 'ccc', 'ddd', 'eee']
print(names)
--------------------------
['aaa', 'bbb', 'ccc', 'ddd', 'eee']
--------------------------

2.3.1.取单个元素

1) 打印第1个
print(names[0])

2) 打印最后1个,倒数第一个(从右往左数第1个)
print(names[-1])

3) 一次取出某几个,第1个和第3个
print(names[0],names[2])
print(names[0,2])      	# 错误的写法

2.3.2.取多个元素

  • [第一个:最后一个:步长]
    1. 范围引用
print(names[0:3])   # 打印从开始到第3个对象
print(names[:3])    # 打印从开始到第3个对象,开头的0可以省略
print(names[-3:])   # 最后3个,从右往左数3个,从倒数第3个到最后
  • 从开始到倒数第3个,不计算-3位置的(从左往右数,不计算最后的)
print(names[0:-3])
print(names[:-3])          # 简写
  • 打印从第2个到最后一个
print(names[1:])    # 包含最后一个,默认什么都不加表示到最后一个
print(names[1:4])   # 列表元素是有限的可以直接写下标
print(names[1:-1])  # 注意:-1不包含最后一个,只取到倒数第二个
  • 尾部元素引用,倒数第3个到倒数第2个,是从左往右看
print(s1[-1])       # 序列最后一个元素
print(s1[-3])       # 序列倒数第三个元素
print(names[-3:-1])
print(names[-1:-3]) # 错误写法:从右往左第1个到第3个
  • 从上面可以看到,在范围引用的时候,如果写明上限,那么这个上限本身不包括在内。

  • 2)间隔引用,步长,默认步长为1,步长是有方向的,从左向右

names = ["aaa","bbb","ccc","ddd","eee"]
print(names[1::1])  # 第二个到最后一个连续取
print(names[1::2])  # 从左到右隔一个去取步长为2
  • 3)反向引用:步长的负数表示反向取(从右向左取)
print(names[1::-1]) # 从右向左依次取,最后一个到第二个
  • 从右向左隔一个去取
print(names[1::-2]) # 步长的负数表示反向取(从右向左取)
  • 从上面可以看到,在范围引用的时候,如果写明上限,那么这个上限本身不包括在内。

2.3.3.嵌套列表数据引用

  • 思路:分隔取用

2.4.列表的常用方法

  • 1)list.append() # 增加值
names.append("fff")        # 把fff追加到最后
names.insert(1,"ggg")      # 把ggg插入到第2个位置
names.insert(3,"hhh")      # 把hhh插入到第4个位置
  • 2)列表内容修改
names[2] = 'kkk'
names['bbb'] = 'qqq'      # 错误的写法
names[开始:结束] = [a,b,c]
  • 3)list.remove() # 删除列表数据
remove是根据内容删除,删除后返回剩余的内容
names.remove("ggg")       # 删除ggg,
  • 4)list.pop() # 删除列表数据
pop是根据索引删除内容,默认删除最后一个,删除后返回的是被删除的内容
names.pop()		# 默认删除最后一个
names.pop(1)		# 删除1号位置的数据
del names[1]		# 删除1号位置的数据,也就是ggg
  • 5)list.clear() # 清空列表
names.clear()
print(names)
  • 6)list.extend() # 扩展列表
name2 = [1,2,3,4]
names.extend(name2)
print("extend扩展:",names)
  • 7)list.count # 统计列表中某个对象出现的次数
names.append('ccc')
print("count统计:",names.count('ccc'))
  • 8)list.index() # 根据内容找位置
查询对象的索引(位置),查询并显示目标内容
print("index索引:",names.index('ggg'))
print(names[names.index('ggg')])
  • 9)list.reverse() # 反转
将已有对象列表反向输出
names.reverse()
print("reverse反转:",names)
  • 10) list.sort() # 排序
排序规则是按照ASCII码的顺序排列的
name3 = ["aaa","1bbb","!ccc","#ddd","eee","Cccc"]
name3.sort()
print("sort排序:",name3)
  • 默认排序数字是从小到大,怎样按照从大到小排序呢?
x = [4, 6, 2, 1, 7, 9]
x.sort()
print(x)            # 默认排序数字是从小到大
  • 方法1:
x.reverse()       # 正向排序然后取返
print(x)
  • 方法2:
x.sort(reverse=True)    # 直接修改取返参数
print(x)
  • 11)list.copy() # 复制列表
name4 = names.copy()
print("copy复制列表:",name4)
  • 12)身份判断
type(name) is list
--->True
  • 拓展:判断某个元素在不在列表里的方法:
print("aaa" in names)       # 判断对象是否在列表里
print(names.count("aaa"))   # 判断对象出现的次数

3.元组-tuple

3.1.元组定义

  • 1)元组又称为只读列表,用于存储一组数据,其中的数据只可以被查询,不能被修改
  • 2)元组写在小括号”()“里,元素之间用逗号隔开。
  • 3)元组里面的元素本身不可变,但它可以包含可变的对象,比如list列表。
  • 4)字符串是一种特殊的元组,可以执行元组的相关操作。
  • 5)包含0个或1个元素的元组比较特殊:
tuple1 = ()         # 空元组
tuple2 = (20,)      # 一个元素,需要在元素后添加逗号

3.2.元组的应用

  • 1)告诉别人此处数据不可修改,或者对于一些数据我们不想被修改,可以使用元组;
  • 2)元组可以在映射(和集合的成员)中当作键使用,而列表则不行;
  • 3)元组作为很多内建函数和方法的返回值存在。
  • 4)数据库连接配置信息

3.3.元组的创建

ages = (11, 22, 33, 44, 55)
或
ages = tuple((11, 22, 33, 44, 55))
print(ages,type(ages))
--->(11, 22, 33, 44, 55) <class 'tuple'>

3.3.常用的功能方法

  • 1)元组可以切片,切片是取数据操作
  • 2)元祖只有两个方法.count()和.index()
posted @ 2017-12-15 21:40  天生帅才  阅读(460)  评论(0编辑  收藏  举报
// 百度统计