Python基础数据类型与变量—列表

1 定义

列表 (List) 是用于存储有序元素集合的数据类型,可以包含不同类型的元素。可以使用方括号 [] 或 list() 函数创建列表。

代码:

# 创建列表
list1 = [1, 2, 3, "hello", 3.14]
list2 = list((4, 5, 6)) # 使用元组创建列表
print(f"列表1: {list1}, 列表2: {list2}")

结果:

2 索引和切片

列表中的元素可以通过索引访问,也可以通过切片获取子列表。

代码:

# 索引和切片
print(f"列表1的第一个元素: {list1[0]}, 列表1的最后一个元素: {list1[-1]}, 列表1的切片: {list1[1:4]}")

结果:

3 添加元素

append():在列表末尾添加一个元素。  
insert():在指定位置插入一个元素。  
extend():将另一个列表中的元素添加到当前列表末尾。 

代码:

# 添加元素
list1.append("world")
list1.insert(2, "python")
list1.extend([7, 8, 9])
print(f"添加元素后的列表1: {list1}")

结果:

4 删除元素

remove():删除列表中第一个匹配的元素。
pop():删除并返回指定位置的元素,默认删除最后一个元素。
del:删除列表中指定位置的元素或切片

代码:

# 删除元素
list1.remove("hello") # 删除第一个 "hello"
print(f"remove删除元素后的列表1: {list1}")
popped_element = list1.pop(1) # 删除索引为1的元素
print(f"pop删除元素后的列表1: {list1}, 被删除的元素: {popped_element}")
del list1[0] # 删除索引为0的元素
del list1[2:4] # 删除索引2和3的元素
print(f"del删除元素后的列表1: {list1}")

结果:

5 修改元素

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

代码:

# 修改元素
list1[0] = "new value"
print(f"修改元素后的列表1: {list1}")

结果:

6 排序

sort():对列表进行原地排序 (修改原始列表)。
sorted():返回排序后的新列表(不修改原始列表)。

代码:

# 排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
numbers.sort()  # 原地排序,修改numbers
print(f"原地排序后的numbers: {numbers}")
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_numbers = sorted(numbers)  # 返回排序后的新列表,不修改numbers
print(f"排序后的新列表: {sorted_numbers}, 原列表numbers: {numbers}")

结果:

7 常用方法

len():获取列表长度
count():统计某个元素在列表中出现的次数。
index():查找某个元素在列表中第一次出现的位置。

代码:

# print(f"numbers列表长度:{numbers.len()}")
print(f"1 在 numbers 中出现的次数: {numbers.count(1)}")
print(f"9 在 sorted_numbers 中出现的索引: {sorted_numbers.index(9)}")

结果:

6 列表推导式

一种简洁的创建列表的方式,可以根据已有的列表或其他可迭代对象生成新的列表。

代码:

# 列表推导式
squares = [x**2 for x in range(10)] # 生成0-9的平方列表
print(f"0-9的平方列表: {squares}")

even_numbers = [x for x in range(20) if x % 2 == 0] # 生成0-19的偶数列表
print(f"0-19的偶数列表: {even_numbers}")

结果:

①嵌套列表推导式

代码:

# 嵌套列表推导式
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row]  # 将二维列表展开成一维列表
print(f"扁平化矩阵: {flattened}")

结果:

②将一个字符串列表转换为整数列表

代码:

# 将一个字符串列表转换为整数列表
string_numbers = ["1", "2", "3", "4", "5"]
int_numbers = [int(x) for x in string_numbers]
print(f"字符串列表转换为整数列表: {int_numbers}")

结果:

8 案例

①对列表中的元素进行筛选或转换

代码:

#对列表中的元素进行筛选或转换
def filter_and_transform(numbers):
    """
    筛选大于5的偶数,并计算它们的平方.

    Args:
        numbers: 待筛选的数字列表.

    Returns:
        筛选和转换后的数字列表.
    """
    return [x**2 for x in numbers if x > 5 and x % 2 == 0]

numbers = [2, 4, 6, 8, 10, 1, 3, 5, 7, 9]
print(f"筛选大于5的偶数,并计算它们的平方: {filter_and_transform(numbers)}")

结果:

②实现一个简单的栈或队列

代码:

class Stack:
    """
    简单的栈实现.
    """
    def __init__(self):
        self.items = []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        if not self.is_empty():
            return self.items.pop()
        else:
            return None

    def peek(self):
        if not self.is_empty():
            return self.items[-1]
        else:
            return None

    def is_empty(self):
        return len(self.items) == 0

stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(f"栈顶元素: {stack.peek()}")
print(f"出栈: {stack.pop()}")
print(f"出栈: {stack.pop()}")
print(f"栈是否为空: {stack.is_empty()}")

结果:

③列表去重

代码:

def remove_duplicates(numbers):
    """
    使用集合进行列表去重.

    Args:
        numbers: 待去重的列表.

    Returns:
        去重后的列表.
    """
    return list(set(numbers))

numbers = [1, 2, 2, 3, 4, 4, 5]
print(f"列表去重: {remove_duplicates(numbers)}")

结果:

④找出列表中出现次数最多的元素

代码:

def most_frequent(numbers):
    """
    找出列表中出现次数最多的元素.

    Args:
        numbers: 待查找的列表.

    Returns:
        出现次数最多的元素.
    """
    counts = {}
    for x in numbers:
        counts[x] = counts.get(x, 0) + 1 # 使用 get() 方法处理不存在的键
    max_count = 0
    most_frequent_element = None
    for x, count in counts.items():
        if count > max_count:
            max_count = count
            most_frequent_element = x
    return most_frequent_element

numbers = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
print(f"列表中出现次数最多的元素: {most_frequent(numbers)}")

结果:

9 应用场景

  • 存储数据集合
  • 实现数据结构 (栈、队列等)
  • 数据分析
  • Web 开发 (例如存储用户列表)
  • 游戏开发 (例如存储游戏角色的属性)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上研习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值