西安网站品牌建设,回收手机的网站哪家好,网站开发分哪几个步骤,北京ui设计app制作公司目录
1、enumerate函数
1.1、for循环中使用
1.2、enumerate指定索引的起始值
1.3、enumerate在线程中的作用
2、Map 函数
2.1、map()函数可以传多个迭代器对象
3、lambda表达式#xff08;匿名函数#xff09;
示例
4、sort函数和sorted函数
4.1、sort()函数
4.2、…目录
1、enumerate函数
1.1、for循环中使用
1.2、enumerate指定索引的起始值
1.3、enumerate在线程中的作用
2、Map 函数
2.1、map()函数可以传多个迭代器对象
3、lambda表达式匿名函数
示例
4、sort函数和sorted函数
4.1、sort()函数
4.2、sorted函数
4.3、关键字参数key的使用
4.3.1. 使用内置函数作为key
4.3.2. 使用lambda函数作为key
4.3.3、 多级排序
5、filter函数
6、 eval和exec函数
6.1、eval() 函数
6.2、exec() 函数
7、repr函数
7.1、str()和repr()区别
7.1、!s !r 和 !a 的使用
8、join函数
1、enumerate函数
功能用于同时遍历数据对象的索引和值。它常用于迭代序列类型如列表、元组、字符串等返回的是一个包含索引和值的元组。
作用
简化代码避免手动追踪和维护索引变量使代码更简洁和易读。同时获取索引和值方便在迭代过程中获取元素的索引特别适用于需要索引信息的情况。灵活设置起始索引通过 start 参数可以设置起始索引值便于与其他代码或计算习惯对齐。
1.1、for循环中使用
dict [{name:Hello, age:18}, {name:Tom, age:24}, {name:Cat, age:28}]
for index,t in enumerate(dict):
print (index, t) 1.2、enumerate指定索引的起始值
dict [{name:Hello, age:18}, {name:Tom, age:24}, {name:Cat, age:28}]
for index,t in enumerate(dict, 1):print (index, t) 1.3、enumerate在线程中的作用
1、threading.enumerate(): 返回一个包含正在运行的线程的list。2、正在运行指线程启动后、结束前不包括启动前和终止后的线程。3、返回一个list类型通过这个list类型我们就可以得知目前线程数量的多少。
import threadingdef task():time.sleep(3)print(this is task)if __name__ __main__:t1 threading.Thread(targettask)t2 threading.Thread(targettask)t1.start()t2.start()for i, thread in enumerate(threading.enumerate()):print(fThread {i}: {thread.name})t1.join()t2.join() 2、Map 函数
功能map 函数用于将指定函数应用于可迭代对象如列表的每个元素并返回一个迭代器其中包含应用函数后的结果。
语法map(func, *iterables)
作用
map 返回一个迭代器支持惰性计算避免了不必要的内存占用尤其是对于大型数据集
示例
t [1, 2, 3, 4, 5, 6]
print(t)
res map(lambda x: int(x) * int(x), t)
for i in res:print(i, end )
print()
# 此时迭代器中数据已为空
print(list(res)) 2.1、map()函数可以传多个迭代器对象
map 函数会将提供的函数应用于来自多个可迭代对象的对应元素直到其中一个可迭代对象耗尽为止
示例
list1 [1, 2, 3, 4, 5]
list2 [1, 2, 3, 4, 5, 6]
list3 [1, 2, 3, 4, 5, 6, 7]def func(x, y, z):return x, y, z
# 此处的map函数传入了多个迭代器对象
res map(func, list1, list2, list3)
# 因为 list1 的长度最短所以 map 会在 list1 长度的限制下进行映射即到 list1 的最后一个元素为止
print(list(res)) 3、lambda表达式匿名函数
Lambda表达式也称为匿名函数是Python等编程语言中一种快速定义单行的小函数的方法。使用lambda表达式可以写出更简洁、更清晰的代码尤其是在需要使用函数对象的场合。Lambda表达式的基本语法如下
lambda 参数列表: 表达式
这里的“参数列表”是传入函数的参数它们可以是多个用逗号分隔。而“表达式”是关于参数的某种运算其运算结果就是这个函数的返回值。注意lambda表达式不需要写return表达式的计算结果会自动成为这个函数的返回值。
示例
1、简单的lambda表达式
# 使用lambda表达式定义一个简单的加法函数
add lambda x, y: x y # 调用这个函数
print(add(3, 5)) # 输出8
2、结合map()函数使用
# 使用lambda表达式和map()函数将列表中的每个元素乘以2
numbers [1, 2, 3, 4]
doubled map(lambda x: x * 2, numbers) # 将map对象转换为列表
doubled_list list(doubled)
print(doubled_list) # 输出[2, 4, 6, 8]
3、结合filter()函数使用
# 使用lambda表达式和filter()函数过滤出列表中的偶数
numbers [1, 2, 3, 4, 5, 6]
even_numbers filter(lambda x: x % 2 0, numbers) # 将filter对象转换为列表
even_numbers_list list(even_numbers)
print(even_numbers_list) # 输出[2, 4, 6]
4、sort函数和sorted函数
4.1、sort()函数
使用对象sort()是列表list对象的一个方法只能用于列表的排序。排序方式sort()方法默认在原列表上进行排序也就是说它会改变原列表的元素顺序。返回值sort()方法没有返回值或者说返回值是None。排序结果直接体现在原列表上。参数sort()方法接受两个可选的关键字参数key和reverse。key用于指定一个从列表中每个元素提取比较键的函数reverse用于指定排序顺序默认为False即升序如果为True则为降序。
示例
numbers [3, 2, 8, 5, 1]
numbers.sort() # 默认升序排序
print(numbers) # 输出: [1, 2, 3, 5, 8] numbers.sort(reverseTrue) # 降序排序
print(numbers) # 输出: [8, 5, 3, 2, 1]
4.2、sorted函数
使用对象sorted()是Python的内建函数可以对任何可迭代对象进行排序包括列表、元组、字典等。排序后的结果是一个新的列表原可迭代对象的顺序不会被改变。排序方式sorted()函数返回一个新的排序后的列表原可迭代对象保持不变。返回值sorted()函数返回一个新的排序后的列表。参数与sort()方法类似sorted()函数也接受key和reverse作为关键字参数用于指定排序的依据和顺序。
示例
numbers [3, 2, 8, 5, 1]
sorted_numbers sorted(numbers) # 默认升序排序返回新列表
print(sorted_numbers) # 输出: [1, 2, 3, 5, 8]
print(numbers) # 输出: [3, 2, 8, 5, 1]原列表不变 sorted_numbers_desc sorted(numbers, reverseTrue) # 降序排序
print(sorted_numbers_desc) # 输出: [8, 5, 3, 2, 1]
4.3、关键字参数key的使用
4.3.1. 使用内置函数作为key
示例1按字符串长度排序
words [banana, apple, cherry, date]
words.sort(keylen)
print(words) # 输出: [date, apple, cherry, banana] # 或者使用sorted()函数不会改变原列表
sorted_words sorted(words, keylen)
print(sorted_words) # 输出: [date, apple, cherry, banana]
示例2按数字大小排序字符串形式的数字
numbers_str [10, 3, 22, 1]
numbers_str.sort(keyint)
print(numbers_str) # 输出: [1, 3, 10, 22] # 或者使用sorted()函数
sorted_numbers_str sorted(numbers_str, keyint)
print(sorted_numbers_str) # 输出: [1, 3, 10, 22]
4.3.2. 使用lambda函数作为key
lambda函数提供了一种快速定义单行小函数的方法非常适合作为key参数的值。
示例1按元组中某个元素排序
tuples [(1, apple), (3, banana), (2, cherry)]
tuples.sort(keylambda x: x[0]) # 按元组的第一个元素排序
print(tuples) # 输出: [(1, apple), (2, cherry), (3, banana)] # 或者按照元组的第二个元素排序
tuples.sort(keylambda x: x[1])
print(tuples) # 输出: [(1, apple), (3, banana), (2, cherry)]
示例2按字典中的某个值排序
students [{name: Alice, age: 22}, {name: Bob, age: 20}, {name: Charlie, age: 23}]
students.sort(keylambda x: x[age]) # 按字典中的age值排序
print(students)
# 输出: [{name: Bob, age: 20}, {name: Alice, age: 22}, {name: Charlie, age: 23}]
4.3.3、 多级排序
示例1先按年龄再按姓名排序
students [{name: Alice, age: 22}, {name: Bob, age: 20}, {name: Alice, age: 21}]
students.sort(keylambda x: (x[age], x[name]))
print(students)
# 输出: [{name: Bob, age: 20}, {name: Alice, age: 21}, {name: Alice, age: 22}]
5、filter函数
功能filter函数是Python中的一个内置函数用于过滤序列过滤掉那些不符合条件的元素返回一个迭代器。如果序列中的元素符合某个条件即函数返回True则保留这个元素否则过滤掉。
filter函数的基本语法如下
filter(function, iterable)
function判断函数。用于判断序列中的元素是否符合某种条件如果符合条件则返回True否则返回False。如果function为None那么会直接返回iterable中的所有真值元素。iterable一个序列可以是列表、元组、字符串等可迭代对象。
返回值是一个迭代器包含了所有符合条件使判断函数返回True的元素。
示例
# 使用filter函数过滤掉列表中的所有偶数
def is_odd(n): return n % 2 1 numbers [1, 2, 3, 4, 5, 6, 7, 8, 9]
filtered_numbers filter(is_odd, numbers) print(list(filtered_numbers))
# 输出: [1, 3, 5, 7, 9]
6、 eval和exec函数
在Python中eval()和exec()是两个功能强大的内置函数它们都能够执行字符串形式的Python代码但它们在用法和返回值方面存在显著差异。
常见用途将字符串转成相应的对象例如 string 转成 list string 转成 dictstring 转 tuple 等等。
6.1、eval() 函数
eval()函数用于执行一个字符串表达式并返回表达式的值。其基本语法如下
eval(expression, globalsNone, localsNone)
expression必需的参数表示要计算的Python表达式以字符串形式给出。globals可选参数一个字典用于定义全局变量。如果未提供则使用当前的全局命名空间。locals可选参数一个字典用于定义局部变量。如果未提供则默认使用globals参数。
示例
x 1
result eval(x 1)
print(result) # 输出: 2 # 使用 globals 参数
result eval(x y, {x: 1, y: 2})
print(result) # 输出: 3 # 处理复杂表达式
result eval([x**2 for x in range(5)])
print(result) # 输出: [0, 1, 4, 9, 16]
注意事项
eval()只能执行单个表达式并返回表达式的值不支持复杂的代码逻辑例如赋值操作、循环语句等等。由于eval()可以执行任意代码因此存在安全风险特别是当执行的代码来源于不受信任的来源时。
6.2、exec() 函数
exec()函数用于动态执行Python代码。与eval()不同exec()可以执行更复杂的代码块包括多行代码、声明和控制流语句但它不返回任何值即返回值为None。其基本语法如下
exec(source, globalsNone, localsNone)
source必需的参数表示要执行的Python代码可以是字符串或编译后的代码对象。globals和locals与eval()函数相同分别用于定义全局和局部命名空间。
exec(print(Hello, world!)) # 输出: Hello, world! # 动态生成变量
exec(a 10)
print(a) # 输出: 10 # 执行复杂代码块
code
def greet(name): return fHello, {name}! result greet(Alice)
print(result) exec(code) # 输出: Hello, Alice!
注意事项
exec()可以执行任意代码因此同样存在安全风险。使用exec()时应尽量避免执行不受信任的代码或明确指定globals和locals参数以限制作用域。比如下面的代码就禁用了内置模块
s {__builtins__: None}
eval(__import__(os).system(whoami), s)
7、repr函数
7.1、str()和repr()区别
在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法即str() 或者 repr() 。自定义对象输出格式需要重写函数__repr__。
str()和repr()区别
1、函数str( )将其转化成为适于人阅读的前端样式文本面向用户2、函数repr(object)将对象转化为供解释器读取的形式面向程序员返回一个对象的 string 格式并且可以通过eval函数还原为原来的对象。3、如果两个都重写那么则优先调用__str__只重写__repr__,则只调用__repr__
示例
示例s python
a str(s)
b repr(s)print(a)
print(b)
print(type(a))
print(type(b))
print(eval(b))print(- * 100)print(a b)
运行结果 注意
对于字符串类型repr转换后外层会多一对引号对于int类型转换为字符串类型不会。命令行下直接输出对象调用的是对象的repr方法而print输出调用的是str方法
7.1、!s !r 和 !a 的使用
示例
def __repr__(self):return fuser{self.user!r}, variant{self.variant!r}result func(*args, **kwargs)
print(f {func.__name__!r} returned {result!r})
说明
默认情况下f 字符串显示对花括号内的值调用str的结果。指定!r显示调用repr的结果。转换字段在格式化之前会导致类型强制。通常格式化值的工作是由值本身的format () 方法完成的。但是在某些情况下需要强制将类型格式化为字符串覆盖其自己的格式化定义。通过在调用format ()之前将值转换为字符串绕过了正常的格式化逻辑。当前支持三种转换标志!s 调用 str() 值!r 调用 repr() 和 !a 调用 ascii()。
8、join函数
它的主要作用是将一个字符串列表或数组中的所有元素连接成一个单独的字符串元素之间可以插入一个指定的分隔符。这个函数在处理文本、生成文件路径或URL时非常有用。
示例
在Python中join是一个字符串方法用于将序列如列表中的元素以指定的字符或字符串连接生成一个新的字符串。
separator ,
words [Hello, world, Python]
sentence separator.join(words)
print(sentence) # 输出: Hello, world, Python
注意分割对象储存的对象要为字符串否则会报错
问题如果储存非字符串的元组、列表、字典等拼接时报错比如元组储存数字进行连接则会报错
示例
a (1,2,3) #定义元组a
;.join(a)#报错:TypeError: sequence item 0: expected str instance, int found
解决方案要将数字连接起来成为一个字符串则结合for循环语句并将数字转为字符串再连接起来
a (1,2,3) #定义元组a
;.join(a)#报错:TypeError: sequence item 0: expected str instance, int foundb (186234,1385475,1235462)
;.join(str(i) for i in b)# 输出结果为186234;1385475;1235462#调用set函数去重处理
e (1,2,3,2) #定义元组a
、.join(str(i) for i in set(e))# 输出结果为1、2、3