1. 序列
(1).序列是Python中最基本的数据结构。序列中的每一个元素都分配一个数字,代表它在序列中的位置(索引),第一个索引时0,第二个索引是1,以此类推。
(2).序列中的所有元素都是有编号的,从0开始递增;可以通过编号分别对序列的元素进行访问:在变量后加中括号,在中括号中输入所取元素的编号值。
(3).序列是一种数据存储方式,用来存储一系列的数据,在内存中,序列就是一块用来存放多个值的连续的内存空间,比如整数系列[10, 20, 30, 40]。
(4).Python中一切皆对象,在内存中实际是按照a = [10, 20, 30, 40]这种方式存储的。
(5).在Python中,常用的序列结构有:字符串,列表,元组,字典,集合等。
(6).Python中所有序列都可以进行一些特殊操作,包括索引,分片,序列相加,乘法,成员资格,长度,最小值和最大值;
(7).序列中的元素从0开始,从左向右依自然顺序编号递增;也可以从右向左开始索引,最右边的元素索引值为-1,从右向左递减;
(8).在Python中,从左向右索引称为正数索引,从右向左索引称为负数索引。使用负数索引时,Python会从最后一个元素开始计数,最后一个元素的位置编号是-1。
2. 列表
列表:用于存储任意数目,任意类型的数据集合。
列表是内置可变序列,是包含多个元素的有序连续的内存空间。
列表定义如下:a = [10, 20, 30, 40], 其中,10,20,30,40这些称为:列表a的元素,可以使用索引来获取到
列表中的元素可以是任意类型的,也可以是列表。列表中包含列表就是嵌套列表。
列表大小可变,可以根据需要随时增加或缩小。
字符串和列表都是系列类型,一个字符串是一个字符系列,一个列表是任何元素的序列。
3. 列表的创建
(1) 列表的创建使用[]来实现,列表元素直接使用逗号(,)分隔开。
创建一个空列表a:a = []
(2) 使用list()可以将任何可迭代的数据转化为列表,
比如:a = list(range(10))
(3) 使用range()创建整数列表
range()可以帮助我们非常方便的创建整数列表,语法为:range([start,] end [,step]), 参数说明:
start参数: 可选,表示起始数字,默认为0;
end参数: 必填,表示结尾数字;
step参数:可选,表示递增步长,不写默认步长为1;
Python3中range()返回的是一个range对象,而不是列表,我们还需要使用list()方法将其转化成列表对象;
比如:list(range(3, 15, 2))
(4)结合for循环推导式生成列表,比如:
a = [x*2 for x in range(5)] # 生成一个整数列表
a = [x*3 for x in range(100) if x % 9 == 0] # 通过if条件过滤生成列表
4. 获取列表元素
(1) 使用列表元素的下标索引来获取到对应的值
(2) 通过切片slice操作来获取列表的子列表或修改这个列表,语法:[起始偏移量 start: 终止偏移量 end [: 步长 step]]
[:] 提取整个列表
[start:] 从start索引开始到结尾
[:end] 从头开始到end-1
[start:end] 从start到end-1
[start:end:step] 从start提取到end-1,步长是step
[-start:] 倒数start
[start::-1] 从start开始提取,步长为负数,逆向提取
[-start:-end] 倒数第start个到倒数第end-1个
[::-1] 步长为负数,从右到左反向提取
切片操作时,起始偏移量和终止偏移量不在[0, 字符串长度-1]这个范围,也不会报错。起始偏移量小于0则会被当做0处理,终止偏移量大于“长度-1”会被当做-1处理。
5. 修改列表
通过列表的索引取出列表值,然后赋予新值;另外可以使用append()方法为列表添加新值;
在Python的列表中,不能为一个不存在的位置赋值。一旦初始化了一个列表,就不能再往这个列表中增加元素了。如果需要往列表中增加元素,需要使用列表的append()方法来实现。
比如:list1 = ['abc', 'def', 'ABC', 'DEF']
list1[2] = 200 # 修改列表元素
list1.append("100") # 增加列表元素
也可以使用列表的分片来为列表赋值,比如:
list1[2:2] = list("ghij")
最终的列表list1 = ['abc', 'def', 'g', 'h','i','j' 'ABC', 'DEF']
6. 删除列表元素
可以def语句或remove()方法来删除列表元素
比如:del list1[2]
也可以使用列表的分片操作来删除元素,比如:
list1[1:2] = []
7. Python列表操作符
(1) + 使用加操作符合(+)并两个列表
(2) * 使用乘操作符号(*)复制列表
(3) in 判断某个元素是否存在于某个列表, 存在返回True,不存在返回False
(4) not in 判断某个元素是否不存在于某个列表,不存在返回True,存在返回False
代码示例:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# author : liuhefei
# Time : 2019/11/9
# desc: Python数据类型之列表
if __name__ == "__main__":
# 定义一个空列表
list1 = []
# 定义一个整数列表
list2 = [1, 22, 333, 4444, 55555, 666666]
# 定义一个字符串列表
list3 = ['Java', 'Python', 'Html5', 'JavaScript', 'Vue.js']
# 使用range生成一个整数列表
list4 = list(range(20, 3))
print("list3 = ", list3)
# 结合for循环推导式生成列表
a = [x * 2 for x in range(5)] # 生成一个整数列表
print("列表a = ", a)
b = [x * 3 for x in range(100) if x % 9 == 0] # 通过if条件过滤生成列表
print("列表b = ", b)
# 访问列表中的元素
#print("list1[0] = ", list1[0]) # 报错,空列表
print("list2[2] = ", list2[2])
print("list3[4] = ", list3[4])
# 修改列表的元素
print("list2的第5个元素是:", list2[5])
list2[5] = 'CSS3'
print("更新的list2为: ", list2)
list3[0] = '莫愁前路无知己'
list3[1] = '天下谁人不识君'
print("list3 = ", list3)
# 删除列表元素
print("list2 = ", list2)
del list2[5]
print("删除元素后的list1 = ", list2)
# 也可以使用列表的分片操作来删除元素,比如:
list2[1:3] = []
print("list2 = ", list2)
# 添加列表元素
print("list1 = ", list1)
list1.append("己所不欲")
list1.append("勿施于人")
list1.append("沉鱼落雁")
list1.append("闭月羞花")
print("添加元素后的list = ", list1)
# 使用列表的分片来增加元素
list1[2:2] = list(("一心一意", "二龙戏珠", "三从四德", "四通八达"))
print("list1 = ", list1)
# [:] 提取整个列表
print("b[:] = ", b[:])
# [start:] 从start索引开始到结尾
print("b[5:] = ", b[5:])
# [:end] 从头开始到end-1
print("b[:25] = ", b[:25])
# [start:end] 从start到end-1
print("b[5:30] = ", b[5:30])
# [start:end:step] 从start提取到end-1,步长是step
print("b[5:50:3] = ", b[5:50:3])
# [-start:] 倒数start
print("b[-5] = ", b[-5])
# [-start:-end] 倒数第start个到倒数第end-1个
print("b[-2:-8] = ", b[-2:-8])
# [::-1] 步长为负数,从右到左反向提取
print("b[::-1] = ", b[::-1])
# [start::-1] 从start开始提取,步长为负数,逆向提取
print("b[3::-1] = ", b[3::-1])
# + 使用加操作符合(+)并两个列表
print("list1 + list2 = ", list1 + list2)
print("list3 + list4 = ", list3 + list4)
# * 使用乘操作符号(*)复制列表
print("list1*3 = ", list1*3)
print("list2*2 = ", list2*2)
# in 判断某个元素是否存在于某个列表, 存在返回True,不存在返回False
if 4444 in list2:
print("4444在列表list2中")
else:
print("4444不在列表list2中")
# not in 判断某个元素是否不存在于某个列表,不存在返回True,存在返回False
if 4 not in [1, 2, 3, 4]:
print("4不存在于列表中")
else:
print("4存在于列表中")
# 定义一个嵌套列表
lists = [1, 2, 3, 4, [8, 9, 10, 11]]
print("lists = ", lists)
list5 = [1, 2, 3, 4, (10, 20, 30, 40)]
print("list5 = ",list5)8. 列表函数
(1). len(list) 获取列表的元素个数
(2). max(list) 返回列表元素中的最大值
(3). min(list) 返回列表元素中的最小值
(4). list(seq) 该方法用于将元组或字符串转化为列表。seq是要转化为列表的元组或字符串。
(5). list.append(obj) 该方法用于在列表末尾添加新的对象。obj代表需要添加到列表list末尾的对象。append()方法不是简单的返回一个修改过的新列表,而是直接修改原来的列表。
(6). list.count(obj) 该方法用于统计某个元素在列表中出现的次数,其中obj代表列表中统计的对象。
(7). list.extend(seq) 该方法用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表),其中seq代表元素列表。
(8). list.index(obj) 该方法用于从列表中找出某个值第一个匹配项的索引位置,obj代表要查找的对象。
(9). list.insert(index, obj) 该方法用于将对象插入列表,其中index代表对象obj需要插入的索引位置,obj代表需要插入列表中的对象。
(10). list.pop([index=-1]) 该方法用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
pop()方法是唯一一个既能修改列表又能返回元素怒值(除了None)的列表方法。使用pop()方法可以实现数据结构中的栈
(11). list.remove(obj) 该方法用于移除列表中某个值的第一个匹配项,obj为类别中要移除的对象。
(12). list.reverse() 该方法用于反向列表中的元素(逆序)
(13). list.sort() 该方法用于对原列表进行排序,如果指定参数,就使用参数指定的比较方法进行排序。
list.sort( key=None, reverse=False) 对原列表进行排序,
参数说明:key主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。reverse定义排序规则,如果reverse = True 降序, reverse = False 升序(默认)。
(14). list.clear() 该方法用于清空列表
(15). list.copy() 该方法用于复制列表
说明:list.extend(seq), list.insert(index, obj), list.remove(obj), list.reverse(), list.sort(), str1.clear()等方法均返回None。
代码示例:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# author : liuhefei
# Time : 2019/11/17
# desc: Python列表函数
if __name__ == "__main__":
num = [1, 8, 0, 3, 6, -1, -9, 100, 7, 2, 1, 2, 3, 100, 8]
num1 = [10, 20, 30, 40, 50, 60, 70]
str1 = ['a', 'd', 'f', 'g', 'd', 'b', 'c', 'd']
str2 = [1, 9, 6, 'A', 'B', 'C', 'a', 'b', 'c']
str3 = "为了报仇我计划三年"
str4 = ['我们', '你们', '它们', '他们', '她们']
# 如果没人欣赏你,那就自己欣赏自己;如果没人祝福你,那就自己祝福自己。
str5 = ["难过", "别", "如果没人", "别害怕", "自己欣赏自己",
"欣赏你那就", "那就自己祝福自己", "如果没人祝福你"]
str6 = ['f', 'b', 'z', 'w', 'a', 'c', 'k']
tuple = ("假如爱有天意", "雪飞落",
"风拂面", "雪恋衣裳", "人念人")
# 1. len(list) 获取列表的元素个数
print("len(num) = ", len(num))
print("len(str1) = ", len(str1))
print("len(str2) = ", len(str2))
# 2. max(list) 返回列表元素中的最大值
print("max(num) = ", max(num))
print("max(str1) = ", max(str1))
# print("max(str2) = ", max(str2)) #报错,类型不一致
# 3. min(list) 返回列表元素中的最小值
print("min(num) = ", min(num))
print("min(str1) = ", min(str1))
# 4. list(seq) 该方法用于将元组或字符串转化为列表。
# seq是要转化为列表的元组或字符串。
print("list(str3) = ", list(str3))
print("list(tuple) = ", list(tuple))
# 5. list.append(obj) 该方法用于在列表末尾添加新的对象。
# obj代表需要添加到列表list末尾的对象。
# append()方法不是简单的返回一个修改过的新列表,而是直接修改原来的列表。
num.append(1000)
num.append(10000)
print("num = ", num)
str1.append('h')
str1.append('i')
str1.append('j')
print("str1 = ", str1)
# 6. list.count(obj) 该方法用于统计某个元素在列表中出现的次数,
# 其中obj代表列表中统计的对象。
print("num.count(100) = ", num.count(100))
print("str1.count('a') = ", str1.count('a'))
print("str2.count('a') = ", str2.count('a'))
# 7. list.extend(seq) 该方法用于在列表末尾一次性
# 追加另一个序列中的多个值(用新列表扩展原来的列表),
# 其中seq代表元素列表。
print("str1.extend(str2) = ", str1.extend(str2))
print("str1 = ", str1)
print("num.extend([100, 200, 300]) = ",
num.extend([100, 200, 300]))
print("num = ", num)
# 8. list.index(obj) 该方法用于从列表中找出某个值
# 第一个匹配项的索引位置,obj代表要查找的对象。
print("num.index(100) = ", num.index(100))
print("str1.index('d') = ", str1.index('d'))
# 9. list.insert(index, obj) 该方法用于将对象插入列表,
# 其中index代表对象obj需要插入的索引位置,
# obj代表需要插入列表中的对象。该方法不会返回值。
print("num.insert(5, 10000) = ", num.insert(5, 10000))
print("num = ", num)
print("str1.insert(2, 'ABCD') = ", str1.insert(2, "ABCD"))
print("str1 = ", str1)
print("str2.insert(4, 'abcd') = ", str2.insert(4, 'abcd'))
print("str2 = ", str2)
# 10. list.pop([index=-1]) 该方法用于移除列表中的一个元素
# (默认最后一个元素),并且返回该元素的值。
# pop()方法是唯一一个既能修改列表又能返回元素怒值(除了None)的
# 列表方法。使用pop()方法可以实现数据结构中的栈
print("num = ", num)
print("num.pop() = ", num.pop())
print("num.pop(5) = ", num.pop(5))
print("num.pop(-4) = ", num.pop(-4))
# 11. list.remove(obj) 该方法用于移除列表中某个值的
# 第一个匹配项,obj为类别中要移除的对象。
print("str1.remove('a') = ", str1.remove('a'))
print("str1 = ", str1)
print("str4.remove('它们') = ", str4.remove('它们'))
print("str4 = ", str4)
# 12. list.reverse() 该方法用于反向列表中的元素(逆序)
print("num1 = ", num1)
print("num1.reverse() = ", num1.reverse()) # 不返回值
print("num1 = ", num1)
print("str4 = ", str4)
print("str3.reverse() = ", str4.reverse()) # 不返回值
print("str4 = ", str4)
# 13. list.sort() 该方法用于对原列表进行排序,
# 如果指定参数,就使用参数指定的比较方法进行排序。
# list.sort( key=None, reverse=False) 对原列表进行排序,
# 参数说明:key主要是用来进行比较的元素,只有一个参数,
# 具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
# reverse定义排序规则,如果reverse = True 降序, reverse = False 升序(默认)。
# sort()方法不返回值
print("num.sort() = ", num.sort())
print("num = ", num)
print("str5.sort(key=len, reverse=True")
print("str5 = ", str5)
print('str6.sort() = ', str6.sort())
print("str6 = ", str6)
print("str6.sort(key=max) = ", str6.sort(key=max))
print("str6 = ", str6)
# 14. list.copy() 该方法用于复制列表
print("newStr1 = ", str1.copy())
print("newNum = ", num.copy())
# 15. list.clear() 该方法用于清空列表
print("str1.clear() = ", str1.clear())
print("str1 = ", str1)
print("str2.clear() = ", str2.clear())
print("str2 = ", str2)来源:gzh:学虽易学好难 (stydy3344)
结束语:让坚持成为一种习惯!
共同学习,写下你的评论
评论加载中...
作者其他优质文章

