前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Python一些书写技巧

Python一些书写技巧

作者头像
李振
发布2021-11-26 14:57:41
发布2021-11-26 14:57:41
23300
代码可运行
举报
文章被收录于专栏:乱码李乱码李
运行总次数:0
代码可运行

简介

本文介绍了一些平时用到的Python书写技巧。之后会不断更新。

交换变量

代码语言:javascript
代码运行次数:0
复制
x = 6
y = 5
 
x, y = y, x
 
print(x, y) #5 6

if 语句在行内

代码语言:javascript
代码运行次数:0
复制
print("Hello") if True else "World" #Hello

连接

代码语言:javascript
代码运行次数:0
复制
a = [1, 2]
b = [3, 4]
print(a + b) #[1, 2, 3, 4]
 
print(str(1) + " world") #1 world
 
print(`1` + " world") #1 world
 
print(1, "world") #1 world

print(a, 3) #[1, 2] 3

除法

代码语言:javascript
代码运行次数:0
复制
print(5.0//2) #2 地板除
print(2**5) #32 2的5次方

print(.3/.1) #2.9999999999999996
print(.3//.1) #2.0

数值比较

代码语言:javascript
代码运行次数:0
复制
x = 2
if 3 > x > 1:
   print(x) #2

if 1 < x > 0:
   print(x) #2

迭代列表

代码语言:javascript
代码运行次数:0
复制
names = ('Jack','Leo','Sony')
ages = (2001,2002,2003)
for a, n in zip(names, ages):
    print(a, n)
#Jack 2001
#Leo 2002
#Sony 2003

# 索引
for index, a in enumerate(names):
    print(index, a)
#0 Jack
#1 Leo
#2 Sony

列表推导式

已知一个列表,我们可以筛选出偶数列表方法:

代码语言:javascript
代码运行次数:0
复制
numbers = [1,2,3,4,5,6]
even = []
for number in numbers:
    if number%2 == 0:
        even.append(number)

#转变成如下:
even = [number for number in numbers if number%2 == 0]

字典推导

和列表推导类似,字典可以做同样的工作:

代码语言:javascript
代码运行次数:0
复制
names = ['Jack','Leo','Sony']
people = [{key: value for value, key in enumerate(names)}]
print(people)
>>> [{'Sony': 2, 'Leo': 1, 'Jack': 0}]

初始化列表的值

代码语言:javascript
代码运行次数:0
复制
items = [0]*3
print(items)
>>> [0,0,0]

列表转换为字符串

代码语言:javascript
代码运行次数:0
复制
names = ["Leo", "Jack", "Lucy"]
print(", ".join(names))
>>> Leo, Jack, Lucy

从字典中获取元素

代码语言:javascript
代码运行次数:0
复制
data = {'user': 1, 'name': 'Max', 'age': 4}
is_admin = data.get('admin', False)
print(is_admin)
>>> False

切片

代码语言:javascript
代码运行次数:0
复制
x = [1,2,3,4,5,6]
#前3个
print(x[:3])
>>> [1,2,3]
#中间4个
print(x[1:5])
>>> [2,3,4,5]
#最后3个
print(x[-3:])
>>> [4,5,6]
#奇数项
print(x[::2])
>>> [1,3,5]
#偶数项
print(x[1::2])
>>> [2,4,6]

一行代码解决FizzBuzz

有一个简单的编程练习叫FizzBuzz,问题引用如下:

写一个程序,打印数字1到100,3的倍数打印“Fizz”来替换这个数,5的倍数打印“Buzz”,对于既是3的倍数又是5的倍数的数字打印“FizzBuzz”。

这里就是一个简短的,有意思的方法解决这个问题:

代码语言:javascript
代码运行次数:0
复制
for x in range(101):print("fizz"[x%3*4::]+"buzz"[x%5*4::]or x)

集合

除了python内置的数据类型外,在collection模块同样还包括一些特别的用例,在有些场合Counter非常实用。

代码语言:javascript
代码运行次数:0
复制
from collections import Counter
print(Counter("hello"))
>>> Counter({'l': 2, 'h': 1, 'e': 1, 'o': 1})

迭代工具

和collections库一样,还有一个库叫itertools,对某些问题真能高效地解决。其中一个用例是查找所有组合,他能告诉你在一个组中元素的所有不同的组合方式

代码语言:javascript
代码运行次数:0
复制
from itertools import combinations
names = ["Leo", "Jack", "Lucy"]
for name in combinations(names, 2):
    print(name)
>>> ('Leo', 'Jack')
>>> ('Leo', 'Lucy')
>>> ('Jack', 'Lucy')

False == True

在Python中,True和False是全局变量,因此:

代码语言:javascript
代码运行次数:0
复制
False = True
if False:
   print("Hello")
else:
   print("World")
>>> Hello
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
    • 交换变量
    • if 语句在行内
    • 连接
    • 除法
    • 数值比较
    • 迭代列表
    • 列表推导式
    • 字典推导
    • 初始化列表的值
    • 列表转换为字符串
    • 从字典中获取元素
    • 切片
    • 一行代码解决FizzBuzz
    • 集合
    • 迭代工具
    • False == True
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档