继续之前的python教程,本篇关键字 列表,切片,Lambda

先复习下列表的用法

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
# 创建列表
empty_list = []
numbers = [1, 2, 3, 4, 5]
words = ['apple', 'banana', 'cherry']
mixed = [1, 'apple', True, 3.14]

# 访问列表元素
print(words[0]) # 输出 'apple'
print(numbers[2]) # 输出 3

# 修改列表元素
words[0] = 'orange'
print(words) # 输出 ['orange', 'banana', 'cherry']

# 切片
print(numbers[1:4]) # 输出 [2, 3, 4]
print(words[:2]) # 输出 ['orange', 'banana']
print(numbers[::2]) # 输出 [1, 3, 5]

# 添加元素
words.append('grape')
print(words) # 输出 ['orange', 'banana', 'cherry', 'grape']

numbers.insert(2, 10)
print(numbers) # 输出 [1, 2, 10, 3, 4, 5]

# 删除元素
del words[0]
print(words) # 输出 ['banana', 'cherry', 'grape']

numbers.remove(3)
print(numbers) # 输出 [1, 2, 10, 4, 5]

- `len()` 函数可以返回列表中元素的个数。
- `max()` 和 `min()` 函数可以返回列表中的最大值和最小值。
- `index()` 方法可以查找某个元素在列表中第一次出现的位置。

切片

  • 基本语法
    sublist = my_list[start:stop:step]

    • start:起始索引,表示切片开始的位置(包含该位置的元素)。
    • stop:结束索引,表示切片结束的位置(不包含该位置的元素)。
    • step:步长(可选),表示从起始索引到结束索引的步长,默认为 1。
  • 注意事项

    • 如果省略 start,表示从列表开头开始。
    • 如果省略 stop,表示一直切片到列表末尾。
    • 如果 step 为负数,表示从列表末尾开始向前切片。
    • 使用负数索引时,注意负数索引的含义。

切片的使用(针对数值类型):

列表切片是一种用于获取列表中指定部分的灵活方法。它允许你从列表中选择一个连续的子序列,而不需要使用循环或其他迭代结构。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 获取从索引 2 到索引 5(不包含)的子列表
sublist = my_list[2:5]
print(sublist) # 输出 [3, 4, 5]

# 获取从索引 0 到索引 6(不包含),步长为 2 的子列表
sublist = my_list[0:6:2]
print(sublist) # 输出 [1, 3, 5]

# 获取从索引 5 到列表末尾的子列表
sublist = my_list[5:]
print(sublist) # 输出 [6, 7, 8, 9, 10]

# 获取从列表开头到索引 7(不包含)的子列表
sublist = my_list[:7]
print(sublist) # 输出 [1, 2, 3, 4, 5, 6, 7]

# 使用负数索引
# 获取从倒数第三个元素到倒数第一个元素的子列表
sublist = my_list[-3:-1]
print(sublist) # 输出 [8, 9]

切片的使用:(针对字符串类型):

列表切片不仅适用于列表,还适用于字符串。在 Python 中,字符串可以看作是字符列表,因此你可以使用相同的切片语法来对字符串进行切片操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
my_string = "Hello, World!"

# 获取从索引 2 到索引 5(不包含)的子字符串
substring = my_string[2:5]
print(substring) # 输出 "llo"

# 获取从索引 7 到字符串末尾的子字符串
substring = my_string[7:]
print(substring) # 输出 "World!"

# 获取从字符串开头到索引 5(不包含)的子字符串
substring = my_string[:5]
print(substring) # 输出 "Hello"

# 使用负数索引
# 获取从倒数第五个字符到倒数第一个字符的子字符串
substring = my_string[-5:-1]
print(substring) # 输出 "orld"

比较常用的函数:

map() 函数:

  • 功能
    map() 函数接受一个函数和一个或多个可迭代对象作为输入,然后将这个函数应用于每个可迭代对象的对应元素,并返回一个包含所有函数应用结果的迭代器。

  • 示例
    例如,你可以使用 map() 将一个列表中的每个元素都平方:

    1
    2
    3
    numbers = [1, 2, 3, 4, 5]
    squared = list(map(lambda x: x ** 2, numbers))
    print(squared) # 输出 [1, 4, 9, 16, 25]

filter() 函数:

  • 功能
    filter() 函数接受一个函数和一个可迭代对象作为输入,然后对可迭代对象中的每个元素应用这个函数,只保留返回值为 True 的元素,并返回一个包含所有返回值为 True 的元素的迭代器。

  • 示例
    例如,你可以使用 filter() 函数从一个列表中过滤出所有偶数:

    1
    2
    3
    numbers = [1, 2, 3, 4, 5]
    even = list(filter(lambda x: x % 2 == 0, numbers))
    print(even) # 输出 [2, 4]

lambda 的用法:

  1. lambda 表达式
    lambda 是 Python 中的一种匿名函数定义方式,可以用于创建简单的函数,通常用于定义一次性的、简单的函数。lambda 表达式的语法是:lambda arguments: expression

  2. lambda 函数的特点

    • lambda 函数可以有任意数量的参数,但只能有一个表达式。
    • lambda 函数返回的是一个函数对象,可以将其赋值给一个变量,然后调用这个变量来执行函数。
    • lambda 函数通常用于作为其他函数的参数,例如在 map()filter()sorted() 等函数中使用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 使用 lambda 创建简单的函数
add = lambda x, y: x + y
print(add(3, 5)) # 输出 8

# lambda 函数作为其他函数的参数
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))
print(squared) # 输出 [1, 4, 9, 16, 25]

even = list(filter(lambda x: x % 2 == 0, numbers))
print(even) # 输出 [2, 4]

# lambda 函数可以作为排序函数的 key 参数
words = ['banana', 'apple', 'cherry', 'orange']
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words) # 输出 ['apple', 'banana', 'cherry', 'orange']

最后一段代码演示使用了 sorted() 函数对列表 words 进行排序,并指定了一个 key 参数,该参数接受一个函数作为输入,用于生成排序的依据。在这个例子中,使用了一个匿名函数 lambda x: len(x) 作为 key 参数。

  • lambda x: len(x) 表示一个匿名函数,它接受一个参数 x,返回 x 的长度(即字符串的长度)。
  • sorted() 函数会根据列表中每个字符串的长度来进行排序,而不是直接按照字符串的字典顺序排序。
    列表 words 中的字符串分别是 ‘banana’, ‘apple’, ‘cherry’, ‘orange’,它们的长度分别是 6、5、6、6。根据字符串长度排序后,’apple’(长度为 5)会排在最前面,然后是 ‘banana’、’cherry’ 和 ‘orange’。