Python中常见几种序列的特点以及推导式

目录

一.常见序列的特点

二.常见序列的公共方法

三.推导式

3.1推导式是什么

3.2列表推导式

3.3字典推导式

3.4集合推导式

3.5生成器推导式

四.总结


一.常见序列的特点

常见序列语法特点常用函数应用场景
字符串(str)

s = "hello"

s = '''多行字符串

'''

不可变

可索引、可切片

可遍历

replace():替换

split():切割

join():拼接

lower()  upper():大小写转换

find()  index():查找

title():单词首字母大写

isalpha()  isdigit():判断

文本处理

格式化输出

正则匹配

列表(list)

lst = [1,2,3]

lst = list(range(5))

可变

可索引、可切片

可嵌套

append()  extend()

insert:添加元素

sort():排序

reverse():反转

remove()  pop():删除

动态数据存储

需要修改的序列

栈或者队列

元组(tuple)

t =  (1,2,3)

t = tuple([1,2,3])

不可变

可索引、可切片

可哈希

count():统计元素出现次数

index():查找

不可变数据

函数的对多个返回值

字典的键

字典(dict)

d = {"name": "Alice", "age": 25}

d = dict(name="Alice", age=25)

键值对储存

键唯一且不可变

keys():返回所有键

values():返回所有值

items():返回键值对

字典名称[key] = value :修改或添加

update():合并

快速查找

JSON数据处理

缓存

集合(set)

s = {1, 2, 3}

s = set([1, 2, 3])

无序不重复

可变

add():添加元素

remove():删除元素

in   not in  :判断

update():合并

去重

成员快速判断

集合运算

二.常见序列的公共方法

+合并
*复制(set和int类型不支持)
in元素是否不存在
not in元素是否存在
max()返回最大值
min()返回最小值
len()查看序列元素个数
# 合并
str1 = "我爱"
str2 = "中国"
print(str1 + str2)

list1 = [1,2,3]
list2 = [4,5,6]
print(list1 + list2)

tuple1 = (1,2,3)
tuple2 = (4,5,6)
print(tuple1 + tuple2)


# 复制
# 1、字符串与乘号的关系
print('-' * 40)
print('小明爱吃麻辣烫')
print('-' * 40)
# 2、列表与乘号的关系
list1 = ['*']
print(list1 * 10)
# 3、元组与乘号的关系
tuple1 = (5, )
print(tuple1 * 10)


# in和not in
fruits = ['apple', 'banana', 'orange']
if 'apple' in fruits:
    print("存在")
else:
    print("不存在")


# max()和min()
nums = [1,2,3,5,8,6,9,4]
max_num = max(nums)
min_num = min(nums)
print(max_num)
print(min_num)

# len()
str1 = 'aaabbbccc'
length = len(str1)
print(length)

三.推导式

3.1推导式是什么

推导式是 Python 提供的一种简洁、高效的创建数据结构(如列表、字典、集合)的方式,可以替代传统的for循环

3.2列表推导式

列表推导式的基本语法:

变量名 = [表达式 for 变量 in 对象]
变量名 = [表达式 for 变量 in 对象 if 条件]
变量名 = [表达式 for 变量 in 对象 for 变量 in 对象]

可以帮你快速生成列表,并进行过滤。

示例:

(1)基本用法

# 生成 0~9 的平方列表
squares = [x**2 for x in range(10)]
print(squares)  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

(2)带条件过滤

# 只保留偶数
evens = [x for x in range(10) if x % 2 == 0]
print(evens)  # [0, 2, 4, 6, 8]

(3)嵌套循环

# 生成笛卡尔积(组合)
pairs = [(x, y) for x in [1, 2, 3] for y in ['a', 'b']]
print(pairs)  # [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b'), (3, 'a'), (3, 'b')]

3.3字典推导式

基本语法:

列表名 = {key: value for item in 对象 if 条件}

可以快速生成字典,并进行过滤或者转换。

示例:

(1)基本用法

# 将列表转为字典(元素作为键,平方作为值)
d = {x: x**2 for x in [1, 2, 3, 4]}
print(d)  # {1: 1, 2: 4, 3: 9, 4: 16}

(2)条件过滤

# 只保留值大于 10 的项
scores = {'Alice': 85, 'Bob': 59, 'Charlie': 72}
passed = {k: v for k, v in scores.items() if v >= 60}
print(passed)  # {'Alice': 85, 'Charlie': 72}

(3)键值对换

# 将键和值互换
original = {'a': 1, 'b': 2}
swapped = {v: k for k, v in original.items()}
print(swapped)  # {1: 'a', 2: 'b'}

3.4集合推导式

基本语法:

集合名 = {表达式 for 变量 in 对象 for 条件}

可以快速生成集合并且可以自动去重。

示例:

(1)基本用法

# 生成 0~9 的平方集合(自动去重)
squares = {x**2 for x in [1, 2, 2, 3, 4]}
print(squares)  # {1, 4, 9, 16}

(2)带条件过滤

# 只保留偶数
evens = {x for x in range(10) if x % 2 == 0}
print(evens)  # {0, 2, 4, 6, 8}

3.5生成器推导式

基本语法:

(表达式 for 变量 in 对象 if 条件)

生成一个生成器,可以直接将生成器表达式用tuple()方法生成元组。

示例:

# 生成 0~9 的平方生成器(不立即计算)
squares_gen = (x**2 for x in range(10))
print(squares_gen)  # <generator object <genexpr> at 0x7f8b1c2b4d60>

# 使用时才计算
for num in squares_gen:
    print(num, end=" ")  # 0 1 4 9 16 25 36 49 64 81

四.总结

推导式类型语法适用场景
列表推导式变量名 = [表达式 for 变量 in 对象 if 条件]生成列表
字典推导式列表名 = {key: value for item in 对象 if 条件}生成字典
集合推导式集合名 = {表达式 for 变量 in 对象 for 条件}生成集合(去重)
生成器推导式生成器推导式 = (表达式 for 变量 in 对象 if 条件)惰性计算(节省内存)
### Python 推导式的使用方法与示例 #### 列表推导式 (List Comprehension) 列表推导式是一种简洁的方式来创建新列表。它可以基于现有的可迭代对象(如列表、元组或其他序列),并可以加入条件过滤。 以下是几个常见的例子: - **生成平方数列表** 下面的例子展示了如何通过 `range` 函数生成一个包含 1 到 10 的平方的列表[^2]。 ```python squares = [x**2 for x in range(1, 11)] print(squares) # 输出: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] ``` - **筛选特定条件的数据** 这里展示了一个从原始列表中筛选出大于 5 的数值,并存入一个新的列表中的过程。 ```python original_list = [1, 3, 5, 7, 9, 2, 4, 6, 8, 10] filtered_list = [x for x in original_list if x > 5] print(filtered_list) # 输出: [7, 9, 6, 8, 10] ``` - **字符串操作** 可以利用列表推导式对字符串进行批量处理,比如将所有单词转换为大写形式。 ```python words = ["hello", "world", "python"] capitalized_words = [word.upper() for word in words] print(capitalized_words) # 输出: ['HELLO', 'WORLD', 'PYTHON'] ``` --- #### 字典推导式 (Dictionary Comprehension) 字典推导式类似于列表推导式,但它用于构建字典而不是列表。其基本格式如下: `{key_expression: value_expression for item in iterable}`[^4]。 以下是一些具体的实例: - **反转键值对** 假设有一个字典,可以通过字典推导式轻松实现键和值的互换[^3]。 ```python dict_example = {"a": 1, "b": 2, "c": 3} reversed_dict = {value: key for key, value in dict_example.items()} print(reversed_dict) # 输出: {1: 'a', 2: 'b', 3: 'c'} ``` - **动态计算值** 如果需要根据某些逻辑动态设置字典的值,也可以借助字典推导式完成。 ```python numbers = [1, 2, 3, 4, 5] squared_dict = {num: num**2 for num in numbers} print(squared_dict) # 输出: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25} ``` --- #### 生成器表达式 (Generator Expression) 虽然看起来像列表推导式,但生成器表达式并不会立即创建整个数据集,而是按需生成元素,因此更加节省内存资源。它的语法几乎完全相同于列表推导式,只是需要用圆括号代替方括号。 - **简单生成器表达式** 下面是一个简单的生成器表达式示例,它会逐项返回平方值而不会一次性占用大量内存。 ```python gen_expr = (x**2 for x in range(1, 6)) for val in gen_expr: print(val) # 依次输出: 1, 4, 9, 16, 25 ``` - **求和运算** 结合内置函数 `sum()`,可以直接对生成器表达式的结果进行累加。 ```python total_sum = sum(x**2 for x in range(1, 6)) print(total_sum) # 输出: 55 ``` --- ### 总结 Python 中的推导式提供了一种优雅且高效的方法来处理集合型数据结构。无论是列表还是字典,都可以通过这些工具简化代码逻辑,提升程序性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值