下方课件区域方向键控制翻页,f 键全屏。

示例代码

列表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 初始选课的同学
students = [20190001 + x for x in range(10)]

# 新增一位
students.append(20191234)

# 新增一批
students.extend(range(20192020, 20192030))

# 把某位同学加到最前面
students.insert(0, 20190000)

# 替换,被替换的长度可以不等于替换内容的长度
students[5:15] = range(20192333, 20192340)

# 有步长的替换则要求两边的序列长度一样
students[0:5:2] = [20195333, 20196333, 20197333]

# 排序和反序
students.sort()
students.reverse()

if 20195333 in students:
  print('你选上了,同学。')

students.remove(20195333)

print('你又退了,同学。')

del students[:]

print(students)

del students

print(students)

元组

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# 元组中可以只有一项内容,单独使用元组时括号可以省略,但逗号是不能省略的
teachers = 'anjing',

# 元组支持拼接操作
more_teachers = teachers + ('Tom', 'Jerry')

# 支持全切片复制元组,但不支持 .copy()
same_teachers = more_teachers[:]

# 支持查找,但不支持排序 .sort()
same_teachers.index('anjing')

# 支持哈希
print(hash(same_teachers))

# 可以整体删除但不支持部分删除
del more_teachers
del teachers

对于序列的进阶循环技巧

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 同时取出索引数字和对应位置的元素
for index, student in enumerate(students):
    print(index, student)

# 同时循环两个序列
import random
scores = [random.randint(60, 100) for x in range(10)]
students = [20190001 + x for x in range(10)]

for score, student in zip(scores, students):
    print(score, student)

集合

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 签到的学生
checkin = [20190001, 20190002, 20190003, 20190004, 20190002]

# 一键去重
unique_checkin = list(set(checkin))

# 所有学生名单
all_students = [20190001, 20190002, 20190003, 20190004, 20190005, 20190006]

# 没来的,抓住你了
nauty_kids = set(all_students) - set(checkin)

print(nauty_kids)

字典

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import random

scores = [random.randint(60, 100) for x in range(10)]
students = [20190001 + x for x in range(10)]

transcript = dict(zip(students, scores))

# 传统写法
ranking = sorted(transcript.items(), key=lambda x: x[1], reverse=True)
ranked_transcript = dict(ranking)

# python 3.6+
ranked_transcript = {
    k: v
    for k, v in sorted(
        transcript.items(), key=lambda item: item[1], reverse=True)
}

print(ranked_transcript)

混合示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import random

# 生成一个假的名单
# 包含 10 个学生
students = []
for x in range(10):
    # 利用字母对应 ASCII 码增加来自动起名
    name = '小' + chr(ord('A') + x)
    student = {
        'name': name,
        'id': 20190001 + x,  # 按顺序生成学号
        'score': random.randint(60, 100)  # 随机一个成绩
    }

    # 将一名学生对应的字典加入到名单中
    students.append(student)

# 输出名单作为调试信息
print(students)

# 对名单进行排序,排序的key是每个学生的成绩,倒序
students.sort(key=lambda x: x['score'], reverse=True)

# 输出排序后的成绩单
for student in students:
    print(student['id'], student['name'], student['score'])