Python数据分析实战3.3-列表list常用操作【python】

【课程3.3】 列表list常用操作

序列是Python中最基本的数据结构,它支持字符数字字符串甚至可以包含列表(即嵌套)
列表用 [ ] 标识,是 python 最通用的复合数据类型。
列表中值的切片也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
加号 + 是列表连接运算符,星号 * 是重复操作

1.列表的特征

**代码块**
lst1 = [1,2,3,'a','b','c',[1,2,3]]
# 可包含任意类型的对象:数值、字符串、列表等

lst2 = [143,56,894,67,43]
print(lst2[0],lst2[4],lst2[-1])
# 通过下标索引访问序列中的值 → 序列的顺序是不能改变的,通过索引来定位列表的元素

lst3 = [1,2,3]
lst3 = lst3 * 3
print(lst3)
# 可随意变换列表长度,相当于随意指定新的列表

**运行结果**
lst4 = [1,2,['a','b']]
# 可嵌套

lst5 = [100,101,102]
lst5[0] = 10
print(lst5)
# 可原位改变


**运行结果**
143 43 43
[1, 2, 3, 1, 2, 3, 1, 2, 3]
[10, 101, 102]

小作业
① [1,2,3]和[“1”, “2”, “3”]什么区别
② 创建一个列表,包括3个人的数学成绩100,89,78
③ 创建一个列表,包括5个中国城市名称
④ 现有一个列表name = [‘小明’, ‘小红’] ,增加“团支书”的名字上去
⑤ 现有一个列表m=[3.1,5.5,4,3,77,8],用print分别输出第2、4个元素

2.列表与生成器

**代码块**

print(range(5),type(range(5)))  
# range()是生成器,指向了一个范围内的整数
# range(5)代表指向了0,1,2,3,4这几个值
# range(2,5)代表指向了2,3,4这几个值,注意这里不是使用:
# range(0,10,2)代表指向了0,2,4,6,8这几个值,最后的2代表步长

lst = list(range(5))
print(lst)
# 通过list()函数生成列表

**运行结果**
range(0, 5) <class 'range'>
[0, 1, 2, 3, 4]

小作业
① range()生成的是不是都是整数?
② 创建一个range,用type()函数查看其类型
③ 哪种方式书写正确:x=range(5), x=range(4:7), x=range(4,8)
④ 创建一个range,用print输出其值,看一下输出结果
⑤ 用list()函数,将一个range范围变为列表
⑥ m=range(10),请问m[2],m[-1],m[5]是多

3.可变列表list常用操作 - 添加元素

**代码块**

lst = list(range(10))
lst.append('hello')
print(lst)
# list.append() 添加元素

lst.append(['a','b','c'])
print(lst)
lst.extend(['a','b','c'])
print(lst)
# 添加多个元素用.extend()方法:用新列表扩展原来的列表,注意和append()方法的区别,append是把括号里的内容加入到最后,extend是把方括号里的内容加入的最后

**运行结果**
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'hello']
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'hello', ['a', 'b', 'c']]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'hello', ['a', 'b', 'c'], 'a', 'b', 'c']

4.可变列表list常用操作 - 删除元素

**代码块**

lst = ['Jack','Jack','Tom','Tracy','Alex','White']
lst.remove('Jack')
print(lst)
# .remove方法:移除列表中某个值的第一个匹配项

del lst[3:5]
print(lst)
# del语句:删除list的相应索引值

lst.clear()
print(lst)
# 移除所有值

**运行结果**
['Jack', 'Tom', 'Tracy', 'Alex', 'White']
['Jack', 'Tom', 'Tracy']
[]

5.可变列表list常用操作 - 插入元素

**代码块**

lst = list(range(10))
print(lst)
lst.insert(3,'a')
print(lst)
# x.insert(i,m)方法:在索引i处插入m,这里索引3代表第四个值

lst.insert(5,[1,2,3])
print(lst)
# 插入一个列表元素

**运行结果**
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 'a', 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 'a', 3, [1, 2, 3], 4, 5, 6, 7, 8, 9]

6.可变列表list常用操作 - 复制

**代码块**
lst = list(range(10))
lst1 = lst
lst1[2] = 'hello'
print(lst,lst1)
# lst,lst1指向同一个列表

**运行结果**
lst = list(range(10))
lst2 = lst.copy()
lst2[2] = 'hello'
print(lst,lst2)
# list.copy()方法:复制一个新的列表,lst,lst2指向两个列表(虽然两个列表值相同)

7.可变列表list常用操作 - 排序

**代码块**

lst1 = [12,45,32,98,45,66,3]
lst2 = ["asd", "cxv", "ghv"]
lst1.sort()
lst2.sort()
print(lst1,lst2)
# 默认升序排序/字母顺序

lst1.sort(reverse=True)
lst2.sort(reverse=True)
print(lst1,lst2)
# 参数reverse:反向排序,针对数字

lst3 = sorted(lst1)
lst3.append('hello')
print(lst1,lst3)
# 函数sorted():排序并复制

**运行结果**
[3, 12, 32, 45, 45, 66, 98] ['asd', 'cxv', 'ghv']
[98, 66, 45, 45, 32, 12, 3] ['ghv', 'cxv', 'asd']
[98, 66, 45, 45, 32, 12, 3] [3, 12, 32, 45, 45, 66, 98, 'hello']

8.讲一讲元祖tuple :不可变的“列表”

**代码块**
tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d"  # 可以不加括号
tup4 = (50,)  # 元组中只包含一个元素时,需要在元素后面添加逗号

print(tup1[2],tup3[:2])  # 索引、切片和list一样

del tup3 # 元祖不能单独删除内部元素(不可变性),但可以del语句来删除整个元祖
#print(tup3)

print(len(tup1))
print(tup1 + tup2)
print(tup4 * 3)
print(max(tup2),min(tup2))
# 序列通用函数

lst = list(range(10))
tup5 = tuple(lst)
print(tup5)
# tuple()函数:将列表转换为元组

**运行结果**
1997 ('a', 'b')
4
('physics', 'chemistry', 1997, 2000, 1, 2, 3, 4, 5)
(50, 50, 50)
5 1
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

小作业
① 分别用append、extend方法,给一个序列增加一个元素1
② x.append([1,2,3])和x.extend([1,2,3])的区别
③ x.append(‘abc’)和x.extend(‘abc’)的区别
④ 创建某一列表,在列表中间插入一个值
⑤ 创建一个随机数值列表,按照降序排列
⑥ sort()和sorted()什么区别
⑦ s=[32,45,63,12,45,89,77], s.remove(45), del s[2], s.pop(4)分别什么区别
⑧ m=[4,5,6,73,4,4,4,4,2],删除2,删除所有的4

#作业1、2
lst=list(range(10))
print(lst)

lst.append(1)
print(lst)

lst.extend([1])
print(lst)

#作业3
lst.append('abc')
print(lst)

lst.extend('abc')
print(lst)

**运行结果**
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 1]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 1, 'abc']
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 1, 'abc', 'a', 'b', 'c']

#作业6 
'''sort()是方法,sorted()是命令行
'''
发布了36 篇原创文章 · 获赞 17 · 访问量 6274

猜你喜欢

转载自blog.csdn.net/qq_39248307/article/details/105431354