1、列表的创建
列表是多个、有序、可重复的元素集合,数据包装在“[]”里,列表中的元素可以是任何类型,甚至可以是一个列表。
创建列表有两种方法:
A 对于规模比较小的列表可以直接定义和赋值,列表可以嵌套,即列表里面的元素可以是列表,列表中的元素数据类型可以不一致。
name = ["123", 2020, True, ["雨花台区", "4"]] print(name) # 结果:['123', 2020, True, ['雨花台区', '4']]
B 利用列表生成式快速生成列表range(start, end, step)
list1 = range(1, 10000, 2) print(list1) # 结果:range(1, 10000, 2)
2、列表的增加:
有三种方法:
A append() 追加
在Python中append 用来向 list 的末尾追加单个元素,此元素如果是一个list,那么这个list将作为一个整体进行追
name = ["123", 2020, True, ["雨花台区", "4"]] name.append(False) name.append(["春江新城", "饮溪坊"]) print(name) # 结果:['123', 2020, True, ['雨花台区', '4'], False, ['春江新城', '饮溪坊']]
B insert(位置,插入的元素) 插入
在Python中 insert 用来将单个元素插入到 list 中。第1个参数是个数值,是插入点的索引,即从什么地方增加元素。
name = ["123", 2020, True] name.insert(2, "南京市") print(name) # 结果:['123', 2020, '南京市', True]
C extend() 延长
在Python中 extend 用来连接 list,在列表的末尾一次性追加另一个序列中的多个值,用新列表扩展原来的列表。
name = ["123", 2020, True] name.extend([3, 5, 7]) print(name) # 结果:['123', 2020, True, 3, 5, 7]
3、列表的删除:
有三种方法:pop(),remove(),del 列表[下标]
A pop(索引值)
如果参数为空,则默认删除最后一个元素,并返回该元素的值;若有参数,则返回该索引位置对应的元素。
name = ["123", 2020, True] print(name.pop()) # 结果:True name = ["123", 2020, True] print(name.pop(1)) # 结果:2020
B remove(元素)
移除列表中的第一个匹配元素,如果元素在列表中,则删除第一个匹配元素;如果元素不在列表中,则会报错。
name = ["123", 2020, True, ["雨花台区", "4"]] name.remove(["雨花台区", "4"]) print(name) # 结果:['123', 2020, True]
C del 列表名[索引]
name = ["123", 2020, True, ["雨花台区", "4"]] del name[2] print(name) # 结果:['123', 2020, ['雨花台区', '4']]
4、列表的修改:
有二种方法:
A 重新赋值
name = ["123", 2020, True, ["雨花台区", "4"]] name = [888] print(name) # 结果:[888]
B 通过列表下标来修改列表的元素
name = ["123", 2020, True, ["雨花台区", "4"]] name[2] = False print(name) # 结果:['123', 2020, False, ['雨花台区', '4']]
5、列表的查找:
有三种方法:
A 通过索引来查找
name = ["123", 2020, True, ["雨花台区", "4"]] print(name[3]) # 结果:['雨花台区', '4']
B 用in 成员运算符来查找
name = ["123", 2020, True, ["雨花台区", "4"]] x = True if x in name: print("这个元素是存在的") # 结果:这个元素是存在的
C 通过切片方式来查找
list的[]中有三个参数,用冒号分割,list=[参数1,参数2,步长]
参数1为index start,参数1为index end,这两个参数也可以是负数。参数为正,当前参数从0开始,从左向右开始数;参数为负,当前参数从-1开始,从右向左开始数。
切片不仅可以切取连续的序列,也可以每隔几个元素切取一个元素,这个间隔的数字就是步长。在使用步长切片时步长的长度值写到最后即可。
通过切片查询
a = ["you", "are", "a", "good", "man", "."] print(a[3]) # 表示截取下标为3的元素,结果:good 类型为字符串 print(a[1:5]) # 表示截取从下标1到下标3,但不包括下标3的元素,结果:['are', 'a', 'good', 'man'] print(a[1:-4]) # 第1和第2个参数都可以是负数,只需要第二个索引所代表的元素位于第一个索引代表的元素的后面即可, 结果为['are'] print(a[1]) #结果为are print(a[-2]) #结果为man print(a[1:-2]) #结果为['are', 'a', 'good'] 顾前不顾后的原则。 # 1 从左向右开始数0 1,结果包含1;-2 从右向左开始数 -1 -2,结果不包含-2。
步长:
如果开始的时候下标是1 设置的步长是2 ,那么就是取下标是1 的数据, 还会取 1+步长(2) =3 那么会取下标是3 的数据。再往后就是结果3+步长(2)=5,系统会取下标是5 的数据, 在往后的话就是结果5+步长(2) =7 系统就会取下标是7的数据。
步长为正数,从左向右切,步长为负数,从右向左切。通过在开始序号和步长前加负号来改变是从前面切还是从后面切,开始序号应与步长保持符号一致性。切片的特性:一,其默认第一个字符的序号为0。二,顾头不顾尾,开始序号的字符会保留,但结束序号的字符不会保留,只会保留到结束序号的前一个字符。
微信公众号刷阅读流量 https://www.douban.com/group/topic/162687100/ https://www.tujiebar.com 途杰吧
a = ["you", "are", "a", "good", "man", "."] # 步长为正,打印的结果是从左到右,步长为负,打印的结果是从右到左 print(a[::1]) # 结果:['you', 'are', 'a', 'good', 'man', '.'] print(a[::-1]) # 结果:['.', 'man', 'good', 'a', 'are', 'you'] print(a[::2]) # 步长为2,就是第1个打印数据是起始下标,第2个数据是(起始下标+2), # 结果:['you', 'a', 'man'] print(a[::-2]) # 结果:['.', 'good', 'are'] print(a[4:1:-1]) # 步长为负,第1个参数数值要比第2个参数数值要大,否则结果为空。步长为负,前面的两个参数,是从右向左开始数 # 结果:['man', 'good', 'a'] print(a[-1:-5:-1]) # 结果:['.', 'man', 'good', 'a'] print(a[-1:-5:-2]) # 结果:['.', 'good'] print(a[-5:-1:2]) # 这里步长是2,第1个参数是-5,即“are”,第2个参数是-1,即“.”, 由于步长是正数,根据左开右闭原则,第2个参数“.”,不包括在内, # 截取的范围是: "are", "a", "good", "man",步长为2,# 第一个打印结果为"are",第二个打印结果是下标(1+2),即"good"。 # 结果:['are', 'good']
6、列表的其他用法:
A count(元素)
a = ["you", "are", "a", "good", "man", "."] print(a.count("a")) 结果:1 表示"a"这个元素在列表a中出现了1次
B index(元素)
print(a.index("a")) # 结果:2 表示"a"这个元素下标为2
C in 判断列表中是否存在某元素
b = "are" print(b in a) 结果:True
D sort()
按照指定规则对所有元素进行排序,默认规则是直接比较规则大小。不能直接打印排序,必须要重新赋值
c = [1,6,2,7,9,434,76,43] c.sort() print(c) # 结果:[1, 2, 6, 7, 9, 43, 76, 434]
c.sort(reverse=True) print(c) # 结果:[434, 76, 43, 9, 7, 6, 2, 1]
E sorted()
对列表进行排序并返回新列表,不对原列表做任何修改。
c = [1,6,2,7,9,434,76,43,32] print(sorted(c)) # 结果:[1, 2, 6, 7, 9, 32, 43, 76, 434]
7、常用的内置函数
len():返回列表中的元素个数,同样适用于元组、字典、集合、字符串等。
c = [1,6,2,7,9,434,76,43] print(len(c)) # 结果:9
max() min()
返回列表中的最大或最小元素,同样适用于元组、字典、集合、range对象等。
sum()
对列表的元素进行求和运算。
8、列表的遍历:
有3种方法:
A enumerate()
枚举列表元素,返回枚举对象,其中每个元素为包含下标和值的元组。该函数对元组、字符串同样有效。
a = ["you", "are", "a", "good", "man", "."] for x in enumerate(a): print(x) #结果: (0, 'you') (1, 'are') (2, 'a') (3, 'good') (4, 'man') (5, '.')
B for in 方法
a = ["you", "are", "a", "good", "man", "."] for x in a: print(x) # 结果: you are a good man .
C for … in range(len(某列表))
a = ["you", "are", "a", "good", "man", "."] for x in range(len(a)): print(x, a[x])
9、列表推导式:
[表达式 for 变量 in 序列或迭代对象]
列表推导式的执行顺序:各语句之间是嵌套关系,左边第二个语句是最外层,依次往右进一层,左边第一条语句是最后一层。
它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以 if 和 for 语句为上下文的表达式运行完成之后产生。
[x*y for x in range(1,5) if x > 2 for y in range(1,4) if y < 3]
等同于下面:
for x in range(1,5): if x > 2: for y in range(1,4): if y < 3: print(x*y)