005、列表的基本使用

 

  列表 list [ ]

  列表基本用法:

  1、用 [ ]  定义,成员之间用 分隔, 成员可以是任意类型 ;

  2、成员 可以重复 ;

  3、获取某一个成员的下标:  列表名 . index('red')  ,无find() 方法 ,字符串有  find() 方法;

  4、有序,通过下标索引  [1]  ,从 0 开始  ,越界取值报错;

  5、切片, 列表名[开始索引(默认为0) :结束索引 :步长(默认为 1)]

 

  列表常用方法和函数:

  列表.count(成员) :统计成员在列表中的次数 ;

  列表.sort() / 列表.sort(reverse=True)  : 升 / 降排序 ;

  列表.reverse()  : 反转 ;

  列表[索引] : 取值,下表过界会报错 ;

  列表.index(成员):获得成员第一次出现的位置 ;

  列表.insert(索引,成员):在指定位置插入成员 ;

  列表.append(成员):在末尾追加成员 ;

  列表.extend(列表2):将列表2的数据追加到列表1;

  len(列表) : 获取列表的长度 ;

  del 列表[索引]:删除指定索引的数据 ;析构函数,垃圾回收;

  列表.remove(成员):删除第一个出现成员的指定数据 ;

  列表.pop:删除末尾成员;

  列表.pop(索引):删除指定索引的数据;

   列表名[1] = 'red'    修改 列表[1] 成员的值;

 

  

  

  定义一个空列表,并用 append 追加值;

# -*- coding:utf-8 -*-
# @Author:  Sky
# @Email:   2780619724@qq.com
# @Time:    2021/7/23 17:02



list = []           #  定义了一个空列表
list.append('bb')
print(list)

list[1] = 'aa'      # 因为没有索引为 1的列表元素;给 [1] 赋值会报错,但是可以用 append 追加一个元素
print(list)
View Code

  执行结果如下:

D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day06\venv\Scripts\python.exe D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day06/test_demo/test_07.py
Traceback (most recent call last):
  File "D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day06/test_demo/test_07.py", line 12, in <module>
    list[1] = 'aa'      # 因为没有索引为 1的列表元素;给 [1] 赋值会报错,但是可以用 append 追加一个元素
IndexError: list assignment index out of range
['bb']

Process finished with exit code 1
View Code

 

  列表基本用法

#   1、用 [ ]  定义,成员之间用 ,  分隔, 成员可以是任意类型 ;
#   2、成员 可以重复 ;
#   3、获取某一个成员的下标:  列表名 . index('red')  ,无find() 方法 ,字符串有  find() 方法;
#   4、有序,通过下标索引  [1]  ,从 0 开始  ,越界取值报错;
#   5、切片, 列表名[开始索引(默认为0) :结束索引 :步长(默认为1)]

list_all = [1, 3.14159, 'python', 'python', [1, 2, 3], (4, 5, 6), {'name': 'sky', 'age': 18}, {'red', 'green', 'blue', 'red'}]
print(list_all)

print(list_all.index('python'))     # 获取第一个python的索引
print(list_all[1])
print(list_all[::-1])
print(list_all[1:7:2])      # 索引 1 开始,加2 ,一直到6, 1 ,3,5

list_2 = [1, 2, 3]
print(len(list_2))

print("aa")
View Code

执行结果如下:

D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day06\venv\Scripts\python.exe D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day06/test_demo/test_08.py
[1, 3.14159, 'python', 'python', [1, 2, 3], (4, 5, 6), {'name': 'sky', 'age': 18}, {'red', 'green', 'blue'}]
2
3.14159
[{'red', 'green', 'blue'}, {'name': 'sky', 'age': 18}, (4, 5, 6), [1, 2, 3], 'python', 'python', 3.14159, 1]
[3.14159, 'python', (4, 5, 6)]
3
aa

Process finished with exit code 0
View Code

 

 列表常用方法和函数:

# -*- coding:utf-8 -*-
# @Author:  Sky
# @Email:   2780619724@qq.com
# @Time:    2021/7/23 19:19


list_all = [1, 3.14159, 'python', 'python', [1, 2, 3], (4, 5, 6), {'name': 'sky', 'age': 18}, {'red', 'green', 'blue', 'red'}]
print(list_all)

print('============== 统计 ==============')
print(list_all.count('python'))     # 统计

print('=============== 排序 =============')

nums_1 = [1, 3, 2, 5, 4]
nums_1.sort()                       # 排序
print(nums_1)
nums_1.sort(reverse=True)           # 逆序
print(nums_1)

print('=============== 排序 =============')

nums_2 = [1, 3, 2, 5, 4]
print(sorted(nums_2))       # 注意方法的作用域
print(nums_2)               # 打印结果还是 [1, 3, 2, 5, 4]
print(sorted(nums_2, reverse=True))     # 逆序
print(nums_2)

print('=============== 排序 =============')

names = ['jack', 'Tony', 'Lee', 'sky']
names.sort(key=lambda i: i[1])      # 指定排序规则,按照成员的第2个字母排序
print(names)

print('=============== 反转 =============')
nums_3 = [1, 3, 2, 5, 4]
nums_3.reverse()            # 列表反转,不等于逆序
print(nums_3)

print('=============== 取值 =============')
print(list_all[1])
print(list_all.index('python'))

print('=============== 增加 =============')
stu_names = ['jack', 'Tony', 'Lee', 'sky']
print(stu_names)
stu_names.insert(0, 'Jane')
print(stu_names)
stu_names.append('Lilei')
print(stu_names)
stu_names_2 = ['勤学', '好学', '恒学']
stu_names.extend(stu_names_2)
print(stu_names)

print('=============== 删除 =============')
stu_names_3 = ['克定', '克文', '克武', '克强', '克武', '徐世昌', '张勋', '世凯', '克武']
print(stu_names_3)
del stu_names_3[2]
print(stu_names_3)

stu_names_3.remove('克武')
print(stu_names_3)

stu_names_3.pop()       # 默认删除最后一个元素
print(stu_names_3)

stu_names_3.pop(2)      # 删除指定索引成员
print(stu_names_3)
View Code

执行结果如下:

D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day06\venv\Scripts\python.exe D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day06/test_demo/test_08.py
[1, 3.14159, 'python', 'python', [1, 2, 3], (4, 5, 6), {'name': 'sky', 'age': 18}, {'red', 'blue', 'green'}]
============== 统计 ==============
2
=============== 排序 =============
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
=============== 排序 =============
[1, 2, 3, 4, 5]
[1, 3, 2, 5, 4]
[5, 4, 3, 2, 1]
[1, 3, 2, 5, 4]
=============== 排序 =============
['jack', 'Lee', 'sky', 'Tony']
=============== 反转 =============
[4, 5, 2, 3, 1]
=============== 取值 =============
3.14159
2
=============== 增加 =============
['jack', 'Tony', 'Lee', 'sky']
['Jane', 'jack', 'Tony', 'Lee', 'sky']
['Jane', 'jack', 'Tony', 'Lee', 'sky', 'Lilei']
['Jane', 'jack', 'Tony', 'Lee', 'sky', 'Lilei', '勤学', '好学', '恒学']
=============== 删除 =============
['克定', '克文', '克武', '克强', '克武', '徐世昌', '张勋', '世凯', '克武']
['克定', '克文', '克强', '克武', '徐世昌', '张勋', '世凯', '克武']
['克定', '克文', '克强', '徐世昌', '张勋', '世凯', '克武']
['克定', '克文', '克强', '徐世昌', '张勋', '世凯']
['克定', '克文', '徐世昌', '张勋', '世凯']

Process finished with exit code 0
View Code

 

判断 某成员 是否  在列表中   in

names = ['克定', '克文', '克武', '徐世昌']
print('克文' in names)
print('世凯' in names)
View Code

执行结果如下:

D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day06\venv\Scripts\python.exe D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day06/test_demo/test_08.py
True
False

Process finished with exit code 0
View Code

 

与列表相关的 ,  字符串的 split('str')  和  str.join() 方法:

# 字符串的 split()  和  join() 方法
# 字符串是不可变序列  ;
names = ['克定', '克文', '克武', '徐世昌']
names_all = '_'.join(names)
print(names_all)
print(names)

sm = '民族,民权,民生'
list_sm = sm.split(',')
print(list_sm)
print(sm)
View Code

执行结果如下:

D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day06\venv\Scripts\python.exe D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day06/test_demo/test_08.py
克定_克文_克武_徐世昌
['克定', '克文', '克武', '徐世昌']
['民族', '民权', '民生']
民族,民权,民生

Process finished with exit code 0
View Code

 

字符串拼接的时候只能是同类型成员的字符串

# 字符串拼接的时候只能是同类型成员的字符串,
# 有True,123 ,所以报错 TypeError: sequence item 4: expected str instance, bool found
names = ['克定', '克文', '克武', '徐世昌', 123, True]
names_all = '_'.join(names)
print(names_all)
print(names)
View Code

执行结果如下:

D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day06\venv\Scripts\python.exe D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day06/test_demo/test_08.py
Traceback (most recent call last):
  File "D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day06/test_demo/test_08.py", line 85, in <module>
    names_all = '_'.join(names)
TypeError: sequence item 4: expected str instance, int found

Process finished with exit code 1
View Code

 

 

 

补充知识:

1、函数和方法的作用域

#  从这一段代码可以体会到函数和方法有啥区别 ?
# (1)函数作用域:从函数调用开始至函数执行完成,返回给调用者后,在执行过程中开辟的空间会自动释放,
#               也就是说函数执行完成后,函数体内部通过赋值等方式修改变量的值不会保留,会随着返回给调用者后,开辟的空间会自动释放。
# (2)方法作用域:通过实例化的对象进行方法的调用,调用后开辟的空间不会释放,也就是说调用方法中对变量的修改值会一直保留。


colour_list = ['red', 'yellow', 'blue', 'green']
colour_list.sort()      # 方法
print(colour_list)

num_list = [3, 4, 2, 1, 5]
sorted(num_list)        # 函数的作用域,只在本行,执行后会释放,所以下面 print(num_list) 还是 [3, 4, 2, 1, 5]
print(num_list)
View Code

执行结果如下:

D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day06\venv\Scripts\python.exe D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day06/test_demo/test_07.py
['blue', 'green', 'red', 'yellow']
[3, 4, 2, 1, 5]

Process finished with exit code 0
View Code

 2、del函数作用域

students = ['勤学', '好学', '敏学', '恒学']
print(students)
print(id(students))

del students[2]         # 用的是析构函数垃圾回收 students[2] 吧 ?调用del函数后,对象被回收;
print(students)
print(id(students))

print('==============================')
students_2 = ['勤学', '好学', '敏学', '恒学']
print(students_2)
print(id(students_2))

students_2.remove('敏学')
print(students_2)
print(id(students_2))
View Code

执行结果如下:

D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day06\venv\Scripts\python.exe D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day06/gggg/demo.py
['勤学', '好学', '敏学', '恒学']
2294371583744
['勤学', '好学', '恒学']
2294371583744
==============================
['勤学', '好学', '敏学', '恒学']
2294372299072
['勤学', '好学', '恒学']
2294372299072

Process finished with exit code 0
View Code

 

posted @ 2021-07-25 00:36  空-山-新-雨  阅读(215)  评论(0编辑  收藏  举报