Python中经常使用小技巧

Python 是一门可读性和简洁性都非常好的编程语言,经常可以用简单的一行代码即实现其他语言需要多行代码才可以实现的功能,下面为大家讲解一下Python使用小技巧

1. 反转字符串

虽然看似是很基础的操作,但是用char循环来反转字符串可能会非常繁琐麻烦。幸运的是,Python包含了一个简单的内置操作来准确地执行这个任务,我们只需访问字符串上的索引::-1。

a = "!dlrow olleH"
backward = a[::-1]

2. Dims作为变量

在大多数语言中,为了将数组放入一组变量中需迭代循环值,或按位置访问暗点,如下所示:

firstdim = array[1]

然而,在Python中有一种更好更快的方法。为了将一列值改为变量,可以简单地将变量名设置为与数组长度相同的数组:

array = [5, 10, 15, 20]
five, ten, fift, twent = array

3. 生成器的next()迭代

在编程中的大多数正常情况下,可以访问一个索引,并使用计数器获取位置数字,计数器将只是一个值,添加到:

array1 = [5, 10, 15, 20]
array2 = (x ** 2 for x in range(10))
counter = 0for i in array1:# This code wouldn't work because 'i' is not in array2.
  # i = array2[i]
   i = array2[counter]
#    ^^^ This code would because we areaccessing the position of i

我们也可以用next()代替它。Next使用一个迭代器,该迭代器将当前位置存储在内存中,并在后台迭代列表:

g = (x ** 2 for x in range(10))
print(next(g))
print(next(g))

4. 智能拆包

迭代地解压值可能会非常耗费时力,Python中有几种不错的方法可以用来解压列表的方法。其中一个是*,它将填充未分配的值并将它们添加到变量名下的新列表中。

a, *b, c = [1, 2, 3, 4, 5]

5. 列举

不了解列举那可不太行。列举可以获取列表中某些值的索引,在数据科学中使用数组而不是数据帧时,这就特别有用:

for i,w in enumerate(array):
   print(i,w)

6. 命名切片

Python中,分割列表非常简单,各式各样优秀工具都能做到。特别好的一点是,它还能够给列表命名,这对于Python中的线性代数特别有用:

a = [0, 1, 2, 3, 4, 5]
LASTTHREE = slice(-3, None)
slice(-3, None, None)
print(a[LASTTHREE])

7. Itertools

如果深入学习Python,那你肯定要熟悉itertools。itertools是标准库中的一个模块,它可以不断地解决迭代问题。它不仅使编写复杂循环大幅度变容易,而且还使代码更简洁快速。有数百种Itertools的使用示例,来看看其中一个:

c = [[1, 2], [3, 4], [5, 6]]
# Let's convert this matrix to a 1 dimensional list.
import itertools as it
newlist = list(it.chain.from_iterable(c))

8. 分组相邻列表

在for循环中,对相邻循环进行分组当然很容易,特别是使用zip(),但这肯定不是最好的方法。为了更轻松便捷地实现这一点,可以用zip编写一个lambda表达式,该表达式将对相邻列表进行分组,如下所示:

a = [1, 2, 3, 4, 5, 6]
group_adjacent = lambda a, k: zip(*([iter(a)] * k))
group_adjacent(a, 3) [(1, 2, 3), (4, 5, 6)]
group_adjacent(a, 2) [(1, 2), (3, 4), (5, 6)]
group_adjacent(a, 1)

9. 计数器

集合也是模块中很好的标准库,这里向大家介绍的是集合中的计数器。使用计数器,可以轻松获得一个列表的计数。这对于获取数据中的值总数、数据的空计数,以及查看数据的唯一值非常有用。

“为什么不直接使用Pandas呢?”使用Pandas来实现这一点无疑会困难得多,而且这只是在部署算法时需要添加到虚拟环境中的另一个依赖项。另外,Python中的计数器类型有很多Pandas系列没有的特性,这使其在某些情况下更有用。

A = collections.Counter([1, 1, 2,2, 3, 3, 3, 3, 4, 5, 6, 7])
A Counter({3: 4, 1: 2, 2: 2, 4: 1, 5: 1, 6: 1, 7: 1})
A.most_common(1) [(3, 4)]
A.most_common(3) [(3, 4), (1, 2), (2, 2)]

10. 出队

如下所示,出队能让代码非常整洁:

import collections
Q = collections.deque()
Q.append(1)
Q.appendleft(2)
Q.extend([3, 4])
Q.extendleft([5, 6])
Q.pop()
Q.popleft()
Q.rotate(3)
Q.rotate(-3)
print(Q)

这些是笔者一直爱用的Python技巧,都非常通用和实用,实践中总有机会能用到。Python的标准库函数工具箱变得越来越多样,还有很多笔者也没听说过的工具。学无止境,这多么令人兴奋!

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/222568.html<

(0)
管理的头像管理
上一篇2025-04-15 13:38
下一篇 2025-04-15 13:39

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注