Python以其语法简洁著称。在学习Python的过程中,总是会发现Python能够轻而易举地帮助我们解决许多问题。
有时候看似复杂的任务,甚至是可以使用一行Python代码就可以搞定。
下面Peter给大家介绍40个有趣且实用的Python的一行代码,让我们一起来感受Python的强大~
打印hello python
每个人都是从print函数开始的
print("hello python")
hello python
print("hello Peter")
hello Peter
print("数据分析师")
数据分析师
二进制转十进制
int("01110",2)# 2^3+2^2+2
14
八进制转十进制
int("140",8)
96
十六进制转十进制
int("ac1",16)
2753
生成连续数值列表
list(range(9))
[0, 1, 2, 3, 4, 5, 6, 7, 8]复制代码
高斯求和
一行代码求解高斯之和:求解1到100的所有数的和
sum(range(1,101))# range函数不包含101
5050
求解奇、偶数之和
# 除以2余数为0表示偶数sum(iforiinrange(1,101)ifi %2==0)
2550复制代码
# 除以2余数不为0表示奇数sum(iforiinrange(1,101)ifi %2!=0)
2500
阶乘
importmath# 需要借助第三方的库math.factorial(6)# 6*5*4*3*2*1
720
矩阵转置
矩阵转置就是实现矩阵的行列转换
list1 = [[1,4,7], [2,5,8], [3,6,9]]# 定义一个嵌套列表
list(list(x)forxinzip(*list1))# list函数实现
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[list(x)forxinzip(*list1)]# [] 符号实现
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
forxinzip(*list1):print(list(x))
[1, 2, 3][4, 5, 6][7, 8, 9]
嵌套列表合并
将多个列表合并成一个大列表
list4 = [[1,2,3],[4,5,6],[7,8,9]]# 定义一个列表list(itemforlist5inlist4foriteminlist5)# 从大到小
[1, 2, 3, 4, 5, 6, 7, 8, 9]
列表合并
a = [1,2,3]b = [4,5,6]a.extend(b)
a
[1, 2, 3, 4, 5, 6]
列表反转
list6 = [1,2,3,4,5,6,7]list6[::-1]
[7, 6, 5, 4, 3, 2, 1
列表解包
h,*i,j = [1,2,3,4,5]print(h)print(i)print(j)
1[2, 3, 4]5
列表去重
通过将列表转成集合,利用集合的去重性质后再转成列表
list7 = [1,2,3,4,3,2,3,3]list(set(list7))
[1, 2, 3, 4]
列表过滤
filter函数的两个参数:
指定某个函数
待执行的可迭代对象,每个对象执行前面的函数
list(filter(lambdax:x %3==0, [1,3,6,7,9,10]))# 找出3的倍数
[3, 6, 9]
列表推导式
[numberfornumberinrange(0,11)]# []
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
集合推导式
{numberfornumberinrange(0,11)}# {}
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
合并集合
s1 = {1,2,3}s2 = {4,5,6}s1.update(s2)
s1
{1, 2, 3, 4, 5, 6}
字典推导式
{i:i**3foriinrange(0,5)}# i**3表示i的三次方
{0: 0, 1: 1, 2: 8, 3: 27, 4: 64}
合并字典
d1 = {"name1":"xiaoming","age1":19}d2 = {"name2":"xiaoming","age2":28}d1.update(d2)
d1
{'name1': 'xiaoming', 'age1': 19, 'name2': 'xiaoming', 'age2': 28}
if-for
# 寻找3的倍数[numberfornumberinrange(0,20)ifnumber %3==0]
[0, 3, 6, 9, 12, 15, 18]
if-else
print("偶数")if8%2==0else("奇数")
偶数
print("偶数")if9%2==0elseprint("奇数")
奇数
快速排序
list2 = [9,5,1,6,2,8]# 定义一个列表sorted(list2)# 默认升序
[1, 2, 5, 6, 8, 9]
sorted(list2, reverse=True)# 降序
[9, 8, 6, 5, 2, 1]
list3 = ["ac","ab","bb","aa","bc","cd","ca"]sorted(list3)
['aa', 'ab', 'ac', 'bb', 'bc', 'ca', 'cd']
首先我们按照第一个字母的ASCII来排序,默认是升序;a最小。当第一个字母相同,再按照第二个字母排序
字符串转成字节
"string to bytes".encode()
b'string to bytes'
获取26个字母表
importstringstring.ascii_letters# 大小写
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
获取大写字母表
string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
获取小写字母表
string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
字符串大小写转化
"Hello! My name is Peter".lower()# 转成小写
'hello! my name is peter'
# 转成小写的另一种写法"Hello! My name is Peter".casefold()
'hello! my name is peter'
"Hello! My name is Peter".upper()# 转成全部大写
'HELLO! MY NAME IS PETER'
"Hello! My name is Peter".title()# 转成首字母大写
'Hello! My Name Is Peter'
寻找最长字符串
list7 = ["c","html","javascript","java"]max(list7, key=len)# key参数指定函数
'javascript'
max(list7)# 默认
'javascript'
删除字符串中的数字
"".join(list(filter(lambdax: x.isalpha(),"abcde12hk18")))
'abcdehk'
list(filter(lambdax: x.isalpha(),"abcde12hk18"))
['a', 'b', 'c', 'd', 'e', 'h', 'k']
列表中的字符串变成数值
list(map(int, ["10","90","50"]))
[10, 90, 50]
字符串反转
"python"[::-1]
'nohtyp'
交换变量
a, b =5,8# 定义两个变量
print("交换前a:",a)print("交换前b:",b)
交换前a: 5交换前b: 8
a, b = b, a# 一行代码交换
print("交换后a:",a)print("交换后b:",b)
交换后a: 8交换后b: 5
数据类型检查
isinstance(5,int)# 数值
True
isinstance("python",int)
False
isinstance("python",str)# 字符串
True
isinstance([1,3,6],list)# 列表
True
斐波那契数列
fibo =lambdax: xifx <=1elsefibo(x-1) + fibo(x-2) fibo(10)
55
统计词频
统计字符串中单个字符的次数
"javascript".count("a")
2
"javascript".count("s")
1
"hello".count("l")
2
统计列表元素个数
importpandasaspdlist10 = [1,3,4,6,1,2,3,1,1,2,5,6,2]pd.value_counts(list10)
1 42 33 26 24 15 1dtype: int64
统计字符串元素个数
fromcollectionsimportCounterCounter("abcdeabcdabcaba")
Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})
统计最多元素
list10 = [1,3,4,6,1,2,3,1,1,2,4,6,2]max(list10, key=list10.count)# 元素1最多
1
min(list10, key=list10.count)# 元素3最少,只出现一次
3
当前时间
importtimetime.time()# 时间戳形式
1632501677.992713
time.ctime()# 标准形式