Python短代码练习与技巧_2

2021-10-18 122点热度 0人点赞 0条评论

本文来自网络多处Python短代码

你必须掌握的20个Python代码,短小精悍,用处无穷

from https://zhuanlan.zhihu.com/p/370071156 by 囍歡

当今python编程语言的潮流已经成为不可阻挡的趋势,python以其较高的可读性和简洁性备受程序员的喜爱。而python编程中的一些小的技巧,运用的恰当,会让你的程序事半功倍。

以下的20个小的程序段,看似非常的简单,但是却非常的有技巧性,并且对个人的编程能力是一个很好的检验,大家应该在日常的编程中多多使用,多多练习。

1.字符串的翻转

img

字符串的翻转,首先最简单的方法就是利用切片的操作,来实现翻转,其次可以利用reduce函数来实现翻转,在python3中,reduce函数需要从functools中进行导入。

2.判断字符串是否是回文

img

该例也可以看作是第一例的应用,利用字符串的翻转来判断字符是否是回文字符串。

3.单词大小写

img

面对一个字符串,想将里面的单词首字母大写,只需要调用title()函数,而所有的字母大写只需要调用upper()函数,字符串首字母大写则是调用capitalize()函数即可。

4.字符串的拆分

img

字符串的拆分可以直接利用split函数,进行实现,返回的是列表,而strip函数用于移除字符串头尾指定的字符(默认为空格或换行符)。

5.将列表中的字符串合并

img

这一条可以认为是第4条的反例,这里是将列表中的字符串合并为字符串。第4条可以与第5条结合,来去除字符串中不想留下的项。

6.寻找字符串中唯一的元素

img

在python中,对于唯一值的筛查,首先应该想到对于set的利用,set可以帮助我们快速的筛查重复的元素,上述程序中,set不仅可以对字符串,而且还可以针对列表进行筛查。

7.将元素进行重复

img

将元素进行重复,可以采用“乘法”的形势,直接乘以原来的元素,也可以采用“加法”的形式,更方便理解。

8.基于列表的扩展

img

基于列表的扩展,可以充分利用列表的特性和python语法的简洁性,来产生新的列表,或者将嵌套的列表进行展开。

9. 将列表展开

img

首先,方法1中 ,我们调用的是iteration_utilities 中的deepflatten函数,第二种方法直接采用递归的方法,我们自己来实现复杂列表的展平,便可以得到展开后的列表。

10.二值交换

img

Python中的二值交换,可以直接采用交换的方式,如上图的方法1,而方法2所示的方法,借助第三个变量,来实现了两个数值的交换。

11.统计列表中元素的频率

img

我们可以直接调用collections中的Counter类来统计元素的数量,当然也可以自己来实现这样的统计,但是从简洁性来讲,还是以Counter的使用比较方便。

12.判断字符串所含元素是否相同

img

Counter函数还可以用来判断字符串中包含的元素是否相同,无论字符串中元素顺序如何,只要包含相同的元素和数量,就认为其是相同的。

13.将数字字符串转化为数字列表

img

上述程序中,方法1利用的map函数,map函数可以将str19中的每个元素都执行int函数,其返回的是一个迭代器,利用list函数来将其转化为列表的形式。注意,在python2中执行map函数就会直接返回列表,而python3做了优化,返回的是迭代器,节省了内存。

14.使用try-except-finally模块

img

当我们在执行程序时,可能会遇到某些不可预知的错误,使用try-except可以帮助我们去捕获这些错误,然后输出提示。注意,如果需要程序无论是否出错,都要执行一些程序的化,需要利用finally来实现。

15. 使用enumerate() 函数来获取索引-数值对

img

enumerate() 函数用于将一个可遍历的数据对象(如上图的列表,字符串)组合为一个索引序列。

16.代码执行消耗时间

img

利用time()函数,在核心程序开始前记住当前时间点,然后在程序结束后计算当前时间点和核心程序开始前的时间差,可以帮助我们计算程序执行所消耗的时间。

17.检查对象的内存占用情况

img

在python中可以使用sys.getsizeof来查看元素所占内存的大小。

18.字典的合并

img

在python3中,提供了新的合并字典的方式,如方法1所示,此外python3还保留了python2的合并字典的方式,如方法2所示。

19.随机采样

img

使用random.sample()函数,可以从一个序列中选择n_samples个随机且独立的元素。

20.检查唯一性

img

通过检查列表长度是否与set后的列表长度一致,来判断列表中的元素是否是独一无二的。

8种高级的Python列表使用技巧,代码都给你整理好啦

from https://zhuanlan.zhihu.com/p/383464292 by liustar
这20个短小精悍的小例子还是非常实用的,尤其是对菜鸟来说,多练习一下对功力提升大有裨益!读百遍,看千遍,不然自己动手敲一边。

Python中的列表是我们最常见的数据结构之一,也是最强大的数据结构之一!Python列表功能非常丰富,并且具有很多隐藏的技巧没有被发现。

一、使用Python过滤列表

1.使用Filter()函数

filter()函数采用两个参数:函数和可迭代项。 在这种情况下,我们将定义一个函数并过滤一个列表。

让我们用一个例子来尝试一下!我们将从列表开始,并过滤出所有小于3的项:

original_list = [1,2,3,4,5]

def filter_three(number):
  return number > 3

filtered = filter(filter_three, original_list)

filtered_list = list(filtered)

print(filtered_list)
# Returns [4,5]

让我们看看这里发生了什么:

  1. 我们定义了原始列表
  2. 然后定义一个接受参数(“ number”)的函数。如果数字大于3,函数将返回True。
  3. 我们定义了一个应用filter函数的项(“ filtered”)。我们的项已筛选,是筛选对象。
  4. 最后,我们创建“ filtered_list”,将列表函数替换为filtered对象。

2.具有列表理解

类似地,我们可以用列表理解过滤列表。记住,列表理解是定义和修改列表非常简单快捷的方式。

让我们看看如何通过列表理解来完成前面的任务:

original_list = [1,2,3,4,5]

filtered_list = [number for number in original_list if number > 3]

print(filtered_list)

# Return [4,5]

从这两个示例中我们可以看出,列表理解是一种更简单,更快捷的过滤列表方法。

二、修改列表

1.使用Map()函数

Python Map函数允许我们将函数应用于可迭代对象中的每个项。

假如我们有一个列表,想返回每个数字的平方。我们可以使用map()函数来实现这一点。让我们看一下具体操作:

original_list = [1,2,3,4,5]

def square(number):
  return number ** 2

squares = map(square, original_list)

squares_list = list(squares)

print(squares)

# Returns [1, 4, 9, 16, 25]

让我们探讨一下这里发生了什么:

首先,我们定义了原始列表和一个返回其参数平方(“number”)的函数。

然后,我们创建一个名为“squares”的新变量,它是map函数的结果,函数和原始列表作为其参数。

最后,我们创建另一个新变量,将list函数应用于squares变量。

这个方法有点复杂!接下来让我们看看清单理解!

2.具有列表理解

我们可以使用列表理解来修改列表项。这甚至是一个更容易和更优雅的方式来编写我们的代码。

让我们尝试一下!

original_list = [1,2,3,4,5]

squares_list = [number ** 2 for number in original_list]

print(squares_list)

# Returns [1,4,9,16,25]

三、将列表与Zip()函数合并

在某些情况下,可能需要合并两个或多个列表。这就是zip()函数的作用:在每个索引处创建一个包含列表对应元素的对象。

让我们用一个例子来尝试一下:

numbers = [1,2,3]

letters = ['a', 'b', 'c']

combined = zip(numbers, letters)

combined_list = list(combined)

# returns [(1, 'a'), (2, 'b'), (3, 'c')]

四、颠倒列表

Python列表是有序的数据结构。因此,项目的顺序很重要。有时我们可能需要颠倒列表中的项,这可以使用Python切片操作轻松完成。

让我们用一个例子来尝试一下:

original_list = [1,2,3,4,5]

reversed_list = original_list[::-1]

print(reversed_list)

# Returns: [5,4,3,2,1]

五、检查列表中的成员身份

有时我们想查看列表中是否存在某个项。

我们只需使用in运算符即可完成此操作。

games = ['Yankees', 'Yankees', 'Cubs', 'Blue Jays', 'Giants']

def isin(item, list_name):
  if item in list_name: print(f"{item} is in the list!")
  else: print(f"{item} is not in the list!")

isin('Blue Jays', games)
isin('Angels', games) 

# Returns
#Blue Jays在名单上!
#Angels不在名单上!

六、查找列表中最常见的项

如果你想在列表中找到最常见的项。例如,你可能在列表中记录了正反面游戏的获胜者,并且想知道哪个赢得最多。

games = ['heads', 'heads', 'tails', 'heads', 'tails']
items = set(games)
print(max(items, key = games.count))

让我们看看这段代码做什么:

  1. 我们用五个正面或反面游戏的结果来定义一个列表;
  2. 我们定义了列表中所有项的集合。set()函数过滤掉了列表中的重复项;
  3. 最后,我们将max()应用于项目集,并使用key参数作为集合中元素的最高计数。

七、展开列表

有时我们会得到一个列表,其中包含其他列表,也就是表中有表。你可以使用列表理解轻松做到这一点!

让我们尝试一下:

nested_list = [[1,2,3],[4,5,6],[7,8,9]]

flat_list = [i for j in nested_list for i in j]

print(flat_list)

# Returns [1, 2, 3, 4, 5, 6, 7, 8, 9]

八、检查唯一性

如果需要检查列表中的所有项是否唯一,则可以使用集合的功能来完成此操作!

Python中的集合类似于列表(因为它是可变且无序的),但是它只能包含唯一的项。

为此,我们需要使用一个函数将列表转换为一个集合,并比较两个项的长度::

list1 = [1,2,3,4,5]
list2 = [1,1,2,3,4]

def isunique(list):
  if len(list) == len(set(list)):
    print('Unique!')
  else: print('Not Unique!')

isunique(list1)
isunique(list2)

# Returns 
# 唯一性
# 不唯一

Python优雅写法,让你工作效率翻2倍

fromhttps://zhuanlan.zhihu.com/p/66488546 by Wayne

我们都知道,Python 的设计哲学是「优雅」、「明确」、「简单」。这也许很多人选择 Python 的原因。但是我收到有些伙伴反馈,他写的 Python 并不优雅,甚至很臃肿,那可能是你的姿势不对哦!今天就给大家带来 Python 语句的十大优雅之法。

为多个变量赋值

有时,有多个变量需要赋值,这时你会怎么赋值呢?

常规方法:

常规方法是给变量逐个赋值。

a = 0
b = 1
c = 2

优雅方法:

直接按顺序对应一一赋值。

a, b, c = 0, 1, 2

序列解包

需要取出列表中的元素。

常规方法:

一般我们知道可以通过下标获取具体元素。

info = ['brucepk', 'man', 'python']
name = info[0]
sex = info[1]
tech = info[2]
print(name,sex,tech)

# 结果
brucepk man python

优雅方法:

给出对应变量接收所有元素。

info = ['brucepk', 'man', 'python']
name,sex,tech = info
print(name,sex,tech)

# 结果
brucepk man python

优雅你的判断语句

我们用判断语句来定义一个绝对值函数。

常规方法:

x = -6
if x < 0:
    y = -x
else:
    y = x
print(y)

# 结果
6

优雅方法:

x = -6
y = -x if x<0 else x
print(y)

# 结果
6

区间判断

使用 and 连续两次判断的语句,条件都符合时才执行语句。

常规方法:

score = 82
if score >=80 and score < 90:
    level = 'B'
print(level)

# 结果
B

优雅方法:

使用链式判断。

score = 82
if  80 <= score < 90:
    level = 'B'
print(level)

# 结果
B

多个值符合条件判断

多个值任意一个值符合条件即为 True 的情况。

常规方法:

num = 1
if num == 1 or num == 3 or num == 5:
    type = '奇数'
print(type)

# 结果
奇数

优雅方法:

使用关键字 in,让你的语句更优雅。

num = 1
if num in(1,3,5):
    type = '奇数'
print(type)

# 结果
奇数

判断是否为空

判断元素是空还是非空。

常规方法:

一般我们想到的是 len() 方法来判断元素长度,大于 0 则为非空。

A,B,C =[1,3,5],{},''
if len(A) > 0:
    print('A 为非空')
if len(B) > 0:
    print('B 为非空')
if len(C) > 0:
    print('C 为非空')

# 结果
A 为非空

优雅方法:

在之前的文章 零基础学 python 之 if 语句 中讲过,if 后面的执行条件是可以简写的,只要条件 是非零数值、非空字符串、非空 list 等,就判断为 True,否则为 False。

A,B,C =[1,3,5],{},''
if A:
    print('A 为非空')
if B:
    print('B 为非空')
if C:
    print('C 为非空')

# 结果
A 为非空

多条件内容判断至少一个成立

常规方法:

用 or 连接多个条件。

math,English,computer =90,80,88
if math<60 or English<60 or computer<60:
    print('not pass')

# 结果
not pass

优雅方法:

使用 any 语句。

math,English,computer =90,59,88
if any([math<60,English<60,computer<60]):
    print('not pass')

# 结果
not pass

多条件内容判断全部成立

常规方法:

使用 and 连接条件做判断。

math,English,computer =90,80,88
if math>60 and English>60 and computer>60:
    print('pass')

# 结果
pass

优雅方法:

使用 all 方法。

math,English,computer =90,80,88
if all([math>60,English>60,computer>60]):
    print('pass')

# 结果
pass

遍历序列的元素和元素下标

常规方法:

使用 for 循环进行遍历元素和下标。

L =['math', 'English', 'computer', 'Physics']
for i in range(len(L)):
    print(i, ':', L[i])

# 结果
0 : math
1 : English
2 : computer
3 : Physics

优雅方法:

使用 enumerate 函数。

L =['math', 'English', 'computer', 'Physics']
for k,v in enumerate(L):
    print(k, ':', v)

# 结果
0 : math
1 : English
2 : computer
3 : Physics

循环语句优化

之前的文章 零基础学 Python 之列表生成式 中讲过列表生成时的用法,举例:生成 [1x1,2x2,3x3,4x4,5x5]。

常规方法:

使用简单的 for 循环可以达到目的。

L = []
for i in range(1, 6):
    L.append(i*i)
print(L) 

#结果:
[1, 4, 9, 16, 25]

优雅方法:

使用列表生成式,一行代码搞定。

print([x*x for x in range(1, 6)]) 

#结果:
[1, 4, 9, 16, 25]

Python 这些优雅的写法学会了吗?自己赶紧动手试试吧。

9个实用的Python小技巧,让你编写出更快、更好的脚本!

from https://zhuanlan.zhihu.com/p/380482726

欢迎关注

@Python与数据挖掘

,专注Python、数据分析、数据挖掘、好玩工具

编写 Python 脚本来解决各种小问题是我每天的乐趣之一。我总是喜欢找出一个问题的 Pythonic 答案,也喜欢当我不知道解决办法时,可以很快地在 stack overflow 查找,并发现一些非常棒的解决方法。

在本文中,我将分享9个 Python 小技巧,这些在日常工作中常常用到,有所收获,点赞支持,欢迎收藏

1、使用defaultdict和lambda函数创建字典

from collections import defaultdict
import numpy as np
q = defaultdict(lambda: np.zeros(5))
# Example output
In [34]: q[0]
Out[34]: array([0., 0., 0., 0., 0.])

defaultdicts 最酷的一点是,它们永远不会引发 KeyError 。任何不存在的键都会获取默认工厂返回的值,在本例中,默认工厂是一个lambda函数,它为给定的任何键返回一个默认NumPy数组,其中包含5个零。

2、正则表达式基本配方

import re
pattern = re.compile(r”\d\d”)
print(re.search(pattern,"Let's find the number 23").group())
# or
print(re.findall(pattern, “Let's find the number 23”))[0]
# Outputs
'23'
'23'

Regex 对于许多 python 程序员来说都是必须的,所以记住核心Regex方法总是很有帮助的。

3、使用集合从两个列表中获得差异

list1 = [1,2,3,4,5]
list2 = [3,4,5]
print(list(set(list1) — set(list2)))
# or
print(set(lista1).difference(set(lista2)))
# Outputs
[1,2]
{1,2}

在这里,集合有助于获得两个python列表之间的差异,这两个列表既是一个列表,也是一个集合。

4、partial 函数

from functools import partial
def multiply(x,y):
    return x*y
dbl = partial(multiply,2)
print(dbl)
print(dbl(4))
# Outputs

functools.partial(<function multiply at 0x7f16be9941f0>, 2)
8

在这里,我们创建一个函数,它复制另一个函数,但使用的参数比原始函数少,这样您就可以使用它将该参数应用于多个不同的参数。

5、使用 hasattr()内置方法获取object属性

class SomeClass:
    def __init__(self):
    self.attr1 = 10
    def attrfunction(self):
        print("Attreibute")
hasattr(SomeClass, "attrfunction")
# Output 
True

6、使用isinstance()检查变量是否为给定类型

isinstance(1, int)
#Output
True

7、使用map()打印列表中的数字

list1 = [1,2,3]
list(map(print, list1))
# Output
1
2
3

一种比循环打印列表内容更快更有效的方法。

8、使用.join()方法格式化datetime日期

from datetime import datetime
date = datetime.now()
print("-".join([str(date.year), str(date.month), str(date.day)])
# Output
'2021-6-15'

9、将两个具有相同规则的列表随机化

import numpy as np
x = np.arange(100)
y = np.arange(100,200,1)
idx = np.random.choice(np.arange(len(x)), 5, replace=False)
x_sample = x[idx]
y_sample = y[idx]
print(x_sample)
print(y_sample)
# Outputs
array([68, 87, 41, 16,  0])
array([168, 187, 141, 116, 100])

文章推荐

太香!7个非常实用但被低估的Python工具包!

Python 自动化 Excel ?这15个技巧要会!

数据缺失影响模型效果?是时候需要missingno工具包来帮你了!

被Altair圈粉了!Python数据可视化又来一位猛将!

4 款 Python 数据探索性分析(EDA)工具包,总有一款适合你!

效率倍增!12 个必须尝试的 Python 工具包!

绘图就可以创建机器学习模型!human-learn做到了!

这招可以让Pandas 数据帧处理速度提高400倍!

干货 | 2021年机器学习不容错过的14个博客


整理不易,有所收获,点个赞和爱心❤️,更多精彩欢迎关注

订阅博客,及时获取文章更新邮件通知

close

订阅博客,及时获取文章更新邮件通知

kerbal

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论