python之List记录

1. 列表(List)基础

Python中的列表是一种可变、有序的元素集合,元素之间通过逗号分隔并包含在一对方括号内。列表的元素可以是不同类型的数据。

创建列表

# 创建一个包含不同类型元素的列表
my_list = [1, 2.5, 'hello', True, [1, 2, 3]]

访问列表元素

使用索引来访问列表中的元素,索引从0开始。

# 访问第一个元素
print(my_list[0])  # 输出: 1

# 访问第三个元素(注意索引是从0开始的)
print(my_list[2])  # 输出: 'hello'

修改列表元素

直接通过索引来修改列表中的元素。

# 修改第一个元素为10
my_list[0] = 10
print(my_list)  # 输出: [10, 2.5, 'hello', True, [1, 2, 3]]

2. 列表操作

添加元素

  • 使用append()方法向列表末尾添加元素。
  • 使用insert()方法在指定索引处插入元素。
my_list.append(4)
print(my_list)  # 输出: [10, 2.5, 'hello', True, [1, 2, 3], 4]

my_list.insert(1, 'world')
print(my_list)  # 输出: [10, 'world', 2.5, 'hello', True, [1, 2, 3], 4]

删除元素

  • 使用remove()方法根据值删除元素。
  • 使用pop()方法根据索引删除元素,并返回该元素的值。
  • 使用del语句删除指定索引或切片范围内的元素。
my_list.remove('hello')
print(my_list)  # 输出: [10, 'world', 2.5, True, [1, 2, 3], 4]

element = my_list.pop(1)
print(element)  # 输出: 'world'
print(my_list)  # 输出: [10, 2.5, True, [1, 2, 3], 4]

del my_list[0]
print(my_list)  # 输出: [2.5, True, [1, 2, 3], 4]

扩展列表

使用extend()方法将一个列表的所有元素添加到另一个列表的末尾。

another_list = [5, 6, 7]
my_list.extend(another_list)
print(my_list)  # 输出: [2.5, True, [1, 2, 3], 4, 5, 6, 7]

3. 列表切片

列表切片允许我们访问列表中的一部分元素。

# 访问索引1到3(不包括3)的元素
print(my_list[1:4])  # 输出: [True, [1, 2, 3], 4]

# 访问从索引1开始到末尾的元素
print(my_list[1:])  # 输出: [True, [1, 2, 3], 4, 5, 6, 7]

# 访问从开头到索引3(不包括3)的元素,步长为2
print(my_list[::2])  # 输出: [2.5, [1, 2, 3], 6]

4. 列表推导式(List Comprehension)

列表推导式是一种简洁的创建列表的语法。

# 创建一个包含0到9的平方的列表
squares = [x**2 for x in range(10)]
print(squares)  # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 创建一个包含所有偶数平方的列表
even_squares = [x**2 for x in range(10) if x % 2

基于上述场景和描述,我们可以继续深入讲解Python列表的高级特性和用法,包括列表推导式中的条件语句、嵌套列表推导式,以及列表与其他数据结构的交互。

5. 列表推导式中的条件语句

在列表推导式中,我们可以使用条件语句(if/else)来过滤或转换元素。

# 创建一个包含0到9之间偶数的平方的列表
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)  # 输出: [0, 4, 16, 36, 64]

# 创建一个列表,如果元素是偶数则平方,否则取负值
numbers = [1, 2, 3, 4, 5, 6]
result = [x**2 if x % 2 == 0 else -x for x in numbers]
print(result)  # 输出: [-1, 4, -3, 16, -5, 36]

6. 嵌套列表推导式

当处理包含列表的列表(即嵌套列表)时,我们可以使用嵌套列表推导式来创建新的嵌套列表结构。

# 假设我们有一个嵌套列表,每个子列表包含三个数字
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# 使用嵌套列表推导式来创建一个新的列表,其中每个元素是原列表中对应子列表的和
flattened_sums = [sum(sublist) for sublist in nested_list]
print(flattened_sums)  # 输出: [6, 15, 24]

# 使用嵌套列表推导式来创建一个新的嵌套列表,其中每个子列表包含原列表中对应子列表的平方
squared_nested_list = [[x**2 for x in sublist] for sublist in nested_list]
print(squared_nested_list)  # 输出: [[1, 4, 9], [16, 25, 36], [49, 64, 81]]

7. 列表与其他数据结构的交互

列表可以与Python中的其他数据结构(如元组、集合、字典)进行交互。

列表与元组

列表和元组非常相似,但元组是不可变的。我们可以将列表转换为元组,但不能直接将元组转换为列表(因为元组是不可变的)。

my_list = [1, 2, 3]
my_tuple = tuple(my_list)  # 将列表转换为元组
print(my_tuple)  # 输出: (1, 2, 3)

# 注意:不能直接将元组转换为列表(因为元组是不可变的),但可以通过切片或列表推导式来“复制”元组
my_list_from_tuple = list(my_tuple)  # 通过list()函数将元组“复制”为列表
print(my_list_from_tuple)  # 输出: [1, 2, 3]
列表与集合

集合是一个无序且不包含重复元素的集合。我们可以使用集合来去除列表中的重复元素。

my_list = [1, 2, 2, 3, 4, 4, 5]
my_set = set(my_list)  # 将列表转换为集合,自动去除重复元素
print(my_set)  # 输出: {1, 2, 3, 4, 5}

# 如果需要保持顺序并去除重复元素,可以使用列表推导式和in关键字
unique_list = []
[unique_list.append(x) for x in my_list if x not in unique_list]
# 注意:上面的代码实际上并不高效,因为它在每次迭代时都检查整个unique_list。更好的方法是使用集合来辅助去重。

# 更高效的方法
unique_list = list(dict.fromkeys(my_list))
print(unique_list)  # 输出: [1, 2, 3, 4, 5],但顺序可能与原列表不同
列表与字典

字典是一个无序的键值对集合。我们可以使用列表推导式和字典推导式来创建字典或处理与字典相关的列表。

# 假设我们有一个包含键和值的列表对
keys = ['a', 'b', 'c']
values = [1, 2, 3]

# 使用zip()函数和字典推导式来创建一个字典
my_dict = {k: v for k, v in zip(keys, values)}
print(my_dict)  # 输出: {'a': 1, 'b': 2, 'c': 3}

# 假设我们有一个字典,并且我们想要获取字典中所有的键或值
my_dict = {'a': 1, 'b': 2, 'c': 3}
keys_list = list(my_dict.keys())
values_list = list(my_dict.values())
print(keys_list)  # 输出: ['a', 'b', 'c']
print(values_list)  # 输出: [1, 2, 3]

# 我们还可以使用列表推导式来处理字典的值(例如,计算所有值的平方)
squared_values = [value ** 2 for value in my_dict.values()]
print(squared_values)  # 输出: [1, 4, 9]

# 或者,我们可以使用字典推导式来创建一个新的字典,其中键保持不变,但值被修改了(例如,乘以2)
doubled_dict = {k: v * 2 for k, v in my_dict.items()}
print(doubled_dict)  # 输出: {'a': 2, 'b': 4, 'c': 6}

### 8. 列表排序

Python提供了多种对列表进行排序的方法。

#### 使用`sort()`方法

`sort()`方法会就地(in-place)对列表进行排序,即不返回新列表,而是修改原始列表。

```python
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
my_list.sort()
print(my_list)  # 输出: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
使用sorted()函数

sorted()函数会返回一个新的已排序列表,原始列表保持不变。

my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_list = sorted(my_list)
print(sorted_list)  # 输出: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
print(my_list)  # 输出: 原始列表保持不变,即[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
自定义排序

我们还可以为sort()sorted()提供key参数,以便根据自定义规则进行排序。

# 根据字符串长度对字符串列表进行排序
words = ['apple', 'banana', 'cherry', 'date']
words.sort(key=len)
print(words)  # 输出: ['date', 'apple', 'cherry', 'banana']

9. 列表的常用内置函数和方法

Python提供了许多内置函数和方法来处理列表,如len()max()min()index()count()等。

  • len(list):返回列表的长度。
  • max(list)min(list):返回列表中的最大值和最小值。
  • list.index(value):返回指定值在列表中的第一个索引,如果值不存在则抛出ValueError
  • list.count(value):返回指定值在列表中出现的次数。

这些只是Python列表的一部分高级特性和用法。随着对Python的深入学习,您会发现更多有关列表的有趣和有用的内容。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值