python内置函数 F

本文详细介绍了Python内置的filter()函数用于过滤序列,float()函数用于转换数值类型,format()函数用于字符串格式化,以及frozenset()创建不可变集合的功能。通过实例演示了如何使用这些函数并讨论了它们在内存效率和数据操作中的作用。
摘要由CSDN通过智能技术生成

python内置函数 F

Python 解释器内置了很多函数和类型,任何时候都能使用。

F

名称描述
filter返回由符合条件元素组成的新迭代器对象。
float将给定的值或参数转换为浮点数。
format格式化字符串。
frozenset创建一个冻结集合(frozen set)。
filter(function, iterable)

filter() 是 Python 的一个内置函数,它用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。这个函数接收两个参数,一个是函数,一个是序列,序列的每个元素作为参数传递给函数进行判定,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

  • function – 一个返回值为布尔值的函数,用于测试序列中的每个元素。
  • iterable – 一个可迭代对象,如列表、元组或字符串。

使用 iterablefunction 返回真值的元素构造一个迭代器。 iterable 可以是一个序列,一个支持迭代的容器或者一个迭代器。 如果 functionNone,则会使用标识号函数,也就是说,iterable 中所有具有假值的元素都将被移除。

请注意, filter(function, iterable) 相当于一个生成器表达式,当 function 不是 None 的时候为 (item for item in iterable if function(item));function 是 None 的时候为 (item for item in iterable if item)

请参阅 itertools.filterfalse() 来了解返回 iterablefunction 返回假值的元素的补充函数。

# 定义一个函数,用于检查数字是否是偶数
def is_even(n):
    return n % 2 == 0

# 创建一个数字列表
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 使用 filter() 函数过滤出偶数
even_numbers = filter(is_even, numbers)

# 将迭代器转换为列表
even_numbers_list = list(even_numbers)

# 输出结果
print(even_numbers_list) # 输出: [2, 4, 6, 8, 10]

filter() 函数返回的是一个迭代器,这意味着它不会立即计算所有的结果,而是在需要时才生成它们。这在处理大数据集时非常有用,因为它可以节省内存。如果你需要立即获得所有的结果,可以像上面的例子那样使用 list() 函数将迭代器转换为列表。

float(x=0.0)

class float(x=0.0)

返回从数字或字符串 x 生成的浮点数。

float() 是 Python 中的一个内置函数,用于将给定的值或参数转换为浮点数。如果参数已经是浮点数,则返回相同的值。如果参数是一个整数,则返回对应的浮点数。如果参数是一个字符串,则尝试将其解析为一个浮点数。

如果该参数是一个字符串,则它应当包含一个十进制数字,前面可以选择带一个符号,也可以选择嵌入空格。 可选的符号可以为 '+''-''+' 符号对所产生的值没有影响。 该参数还可以是一个代表 NaN (not-a-number) 或正负无穷大的字符串。 更确切地说,在去除前导和尾随的空格之后,输入必须为符合以下语法的 floatvalue 产生规则:

sign        ::=  "+" | "-"
infinity    ::=  "Infinity" | "inf"
nan         ::=  "nan"
digit       ::=  <a Unicode decimal digit, i.e. characters in Unicode general category Nd>
digitpart   ::=  digit (["_"] digit)*
number      ::=  [digitpart] "." digitpart | digitpart ["."]
exponent    ::=  ("e" | "E") ["+" | "-"] digitpart
floatnumber ::=  number [exponent]
floatvalue  ::=  [sign] (floatnumber | infinity | nan)

大小写是无影响的,因此举例来说,“inf”, “Inf”, “INFINITY” 和 “iNfINity” 都是正无穷可接受的拼写形式。

另一方面,如果实参是整数或浮点数,则返回具有相同值(在 Python 浮点精度范围内)的浮点数。如果实参在 Python 浮点精度范围外,则会触发 OverflowError

对于一个普通 Python 对象 xfloat(x) 会委托给 x.__float__()。 如果 __float__() 未定义则将回退至 __index__()

如果没有实参,则返回 0.0

示例:

>>> float('+1.23')
1.23
>>> float('   -12345\n')
-12345.0
>>> float('1e-003')
0.001
>>> float('+1E6')
1000000.0
>>> float('-Infinity')
-inf

数字类型 — int, float, complex 描述了浮点类型。

在 3.6 版本发生变更: 您可以使用下划线将代码文字中的数字进行分组。

在 3.7 版本发生变更: x 现在只能作为位置参数。

在 3.8 版本发生变更: 如果 __float__() 未定义则回退至 __index__()

如果 float() 函数的参数无法转换为浮点数,它会抛出一个 ValueError 异常。

format(value, format_spec=‘’)

format() 方法用于格式化字符串。它允许你插入和格式化字符串中的变量。format() 方法可以与字符串的 str.format() 方法一起使用,或者你可以使用新的格式化字符串字面值(f-strings,从Python 3.6开始支持)。

value 转换为“格式化后”的形式,格式由 format_spec 进行控制。format_spec 的解释方式取决于 value 参数的类型;但大多数内置类型使用一种标准的格式化语法: 格式规格迷你语言

默认的 format_spec 是一个空字符串,它通常给出与调用 str(value) 相同的结果。

format(value, format_spec) 的调用会转写为 type(value).__format__(value, format_spec),这样在搜索值的 __format__() 方法时将绕过实例字典。 如果方法搜索到达 object 并且 format_spec 不为空,或者如果 format_spec 或返回值不为字符串则会引发 TypeError 异常。

在 3.4 版本发生变更:format_spec 不是空字符串时, object().__format__(format_spec) 会触发 TypeError

# 基本用法
template = "Hello, {}!"
message = template.format("world")
print(message) # 输出: Hello, world!

# 带位置和关键字的格式化
template = "Hello, {0}! You have {1} new messages."
message = template.format("Alice", 3)
print(message) # 输出: Hello, Alice! You have 3 new messages.

# 格式化数字
pi = 3.141592653589793
formatted_pi = "{:.2f}".format(pi) # 保留两位小数
print(formatted_pi) # 输出: 3.14

# 格式化变量名
name = "Bob"
age = 30
formatted_string = "My name is {name} and I am {age} years
old.".format(name=name, age=age)
print(formatted_string) # 输出: My name is Bob and I am 30 years old.

# 宽度、精度和填充
width = 10
precision = 4
value = 3.1415926
formatted_value = "{:{width}.{precision}f}".format(value, width=width, precision=precision)
print(formatted_value) # 输出: ' 3.1416'(前面有4个空格)

# f-strings 提供了一种更简洁、更可读的方式来格式化字符串。它们是在字符串前加上 f 或 F 前缀,并在大括号 {} 中写入表达式。
name = "Alice"
age = 25
formatted_string = f"My name is {name} and I am {age} years old."
print(formatted_string) # 输出: My name is Alice and I am 25 years old.

# f-strings 还支持表达式和函数调用
x = 10
y = 20
formatted_string = f"The sum of {x} and {y} is {x + y}."
print(formatted_string) # 输出: The sum of 10 and 20 is 30.
frozenset(iterable=set())

class frozenset(iterable=set())

frozenset() 是 Python 中的一个内置函数,用于创建一个冻结集合(frozen set)。冻结集合与普通的集合(set)类似,但它是不可变的,即一旦创建,就不能添加或删除元素。由于这个不可变性,冻结集合可以用作字典(dictionary)的键或集合(set)的元素,而普通的集合则不能。

返回一个新的 frozenset 对象,它包含可选参数 iterable 中的元素。 frozenset 是一个内置的类。有关此类的文档,请参阅 frozenset集合类型 — set, frozenset

请参阅内建的 setlisttupledict 类,以及 collections 模块来了解其它的容器。

# 创建一个冻结集合
fs = frozenset([1, 2, 3])
print(fs) # 输出: frozenset({1, 2, 3})

# 将冻结集合用作字典的键
dict_with_frozenset_keys = {frozenset(['a', 'b']): 'value1', frozenset(['c', 'd']): 'value2'}
print(dict_with_frozenset_keys) # 输出: {frozenset({'a', 'b'}): 'value1', frozenset({'c', 'd'}): 'value2'}

# 将冻结集合用作集合的元素
set_with_frozenset_elements = {frozenset([1, 2]), frozenset([3, 4])}
print(set_with_frozenset_elements) # 输出: {frozenset({1, 2}), frozenset({3, 4})}

# 冻结集合与普通集合的比较
s = {1, 2, 3} # 普通的集合
fs = frozenset(s) # 冻结集合
print(s) # 输出: {1, 2, 3}
print(fs) # 输出: frozenset({1, 2, 3})

# 尝试修改冻结集合(会抛出异常)
# fs.add(4) # AttributeError: 'frozenset' object has no attribute 'add'

由于冻结集合是不可变的,因此你不能像修改普通集合那样添加或删除其元素。

frozenset() 函数提供了一个方式来创建不可变的集合,这在某些需要不可变性的场景(如用作字典键或集合元素)中非常有用。

参考:内置函数 — Python 3.12.2 文档

  • 27
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

棠越

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

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

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

打赏作者

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

抵扣说明:

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

余额充值