首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何写出Pythonic代码

Python由于语言简洁性,让我们以人类思考方式来写代码,新手更容易上手,老鸟更爱不释手。...要写出 Pythonic(优雅、地道、整洁)代码,还要平时多观察那些大牛代码,这里明哥收集了一些比较常见 Pythonic 写法,帮助你养成写优秀代码习惯。 01....变量交换 交换两个变量值,正常都会想利用一个中间临时变量来过渡。 tmp = a a = b b = tmp 能用一行代码解决(并且不影响可读性),决不用三行代码。...这并不意味着,代码行数越少,就越 Pythonic 。 比如下面这样写,就不推荐。...显式代码 有时候出于需要,我们会使用一些特殊魔法来使代码适应更多场景不确定性。

51921
您找到你想要的搜索结果了吗?
是的
没有找到

Golang 切片删除指定元素几种方法

文章目录 1.截取法(修改原切片) 2.拷贝法(不改原切片) 3.移位法(修改原切片) 3.1 方式一 3.2 方式二 4.性能对比 5.小结 参考文献 Go 并没有提供删除切片元素专用语法或函数,需要使用切片本身特性来删除元素...删除切片指定元素一般有如下几种方法,本文以 []int 为例给出具体实现。 1.截取法(修改原切片) 这里利用对 slice 截取删除指定元素。...i-- } } return a } 2.拷贝法(不改原切片) 这种方法最容易理解,重新使用一个 slice,将要删除元素过滤掉。...最终 index 位置就是所有有效元素下一个位置,最后做一个截取就行了。这种方法会修改原来 slice。 该方法可以看成对第一种方法截取法改进,因为每次指需移动一个元素,性能更加。...性能最差也是最常用方法是截取法。随着切片长度增加,上面四种删除方式性能差异会愈加明显。 实际使用时,我们可以根据不用场景来选择。

7K20

让你Python代码更加pythonic

何为pythonic? pythonic如果翻译成中文的话就是很python。很+名词结构用法在中国不少,比如:很娘,很国足,很CCTV等等。 我理解为,很+名词表达了一种特殊和强调意味。...以下为了简略,我们用P表示pythonic写法,NP表示non-pythonic写法,当然此P-NP非彼P-NP。 为什么要追求pythonic?...对于具有其他编程语言经验而初涉Python程序员(比如我自己)来说,在写Python代码时,认识到pythonic写法,会带来更多便利和高效,而本文主要读者也将是这群程序员。...(key,default)方法用于获取字典中key值,若不存在该key,则将key赋默认值default。...for i,e in enumerate(keys): dic[e] = values[i] #{'Age': 23, 'Name': 'Tim', 'Sex': 'Male'} zip方法返回是一个元组

76340

让你Python代码更加Pythonic

这就是著名“python之禅”,简言之,就是要写符合pythonic代码,简洁、优雅、可读性强。 下面选取了一些常见Python规范和代码风格,大家可以进行参考和学习。...其他语言方法: a = 5 b = 6 temp = a a = b b = temp python中,更加简洁方法: a = 5 b = 6 a, b = b, a print(a, b) 输出...:6 5 2.多个变量赋值 python中可以一行代码,同时给多个变量赋值 a,b,c = 2,5,12 3.合并字符串 传统字符串合并方法,由于字符串对象不可改变,每次修改会产生一个新对象,这种方法会消耗很多内存...result = "" for i in list_str: result+=i print(result) python中,使用join()方法更加高效,注意join()方法只适用于元素是字符串列表...= 0: pass 更多关于pythonic写法,可以参考《effctive python》这本书,还有Python官网代码规范要求 https://www.python.org/dev/

70920

10 个 惊艳 Pythonic 单行代码

在这里你可以使用它来将列表元素分配给给定变量,这也称为_拆包_。将*再次打包剩余值,这会产生一个子列表c。它甚至适用于每个其他位置*(例如列表开头或中间部分)。 3....此处使用扩展切片语法 [::]来返回每隔一个元素。...4.删除多个元素 # a = [1,2,3,4,5] del a[::2] # print(a) >> [2, 4] 输出: 扩展切片语法也可用于一次删除多个列表元素。 5....旁注:你也可以根据需要使用该readlines()方法。 6....通常你需要一些循环和条件来检查给定字符串是否是回文。在 Python 中,你只需将字符串与其反向字符串进行比较。除了使用切片运算符[::-1],你还可以使用reverse()函数来反转字符串。

62920

10 个 惊艳 Pythonic 单行代码

在这里你可以使用它来将列表元素分配给给定变量,这也称为拆包。将*再次打包剩余值,这会产生一个子列表c。它甚至适用于每个其他位置*(例如列表开头或中间部分)。 3....此处使用扩展切片语法 [::]来返回每隔一个元素。...4.删除多个元素 # a = [1,2,3,4,5] del a[::2] # print(a) >> [2, 4] 扩展切片语法也可用于一次删除多个列表元素。 5....旁注:你也可以根据需要使用该readlines()方法。 6....通常你需要一些循环和条件来检查给定字符串是否是回文。在 Python 中,你只需将字符串与其反向字符串进行比较。除了使用切片运算符[::-1],你还可以使用reverse()函数来反转字符串。

12310

Python 代码够不够 Pythonic

在我最开始用 Python 时,我还不知道 Pythonic 这个词,直到多年前一位资深程序员在给我培训时候提到了项目中有一些代码不够 Pythonic,需要重构。...Pythonic 意思是指代码不仅仅是语法正确,而是遵循 Python 社区惯例,并以其预期方式使用该语言。...< items.length; index++) { items[index].performAction(); } 在 Python中,使用以下方法会更干净一些: for item in...关于 Pythonic “官方介绍” 其实,Python 命令行里已经秘密“隐藏”了关于 Pythonic 介绍。...在面对模棱两可情况下,拒绝猜测诱惑。 应该有一个--最好只有一个--明显方法。 虽然这种方式一开始可能并不明显,除非你是荷兰人。 现在总比不做要好。 虽然从不比现在*好。

36120

Python(一)让你代码更加pythonic

关键词:python; pythonic pythonic就是让你代码更加具有python特色,通常是利用python独有的一些语法实现。...pythonic代码往往更加简洁、优美和高效,不信你接着往下瞧: 比如,交换两个变量值,通常做法是 ? 而pythonic写法只需要一行,简单高效: ? 这样例子还有很多,本文将一一罗列。...字典默认值 dictget(key,default)方法用来获取字典中key值。如果字典中不存在该key,则将key赋值为default。这样就省去了写if…else…繁琐。 ? ?...zip:配对两个数组 zip方法返回是一个元组,将两个数组中值一一配对。 ? ? 利用zip(*)解配对: ? ?...文件打开和关闭 使用with方法,Python将自动管理文件流打开与关闭,无需手动操作。 ? ? 怎么样,pythonic写法是不是很简练、优美!

55720

【Python】序列 - 数据容器 ( 序列简介 | 序列切片 | 省略 起始坐标 结束坐标 步长 切片 | 列表切片 | 字符串切片 | 元组切片 | 步长 -1 切片 )

正向 索引下标 访问 , 也可以使用 反向 索引下标 访问 ; 二、序列切片 序列 切片操作 指的是 从 一个序列中 , 获取一个 子序列 ; 列表 list , 元组 tuple , 字符串...str , 等 数据容器 都是 内容 连续 , 有序 , 可以使用 下标索引 访问 序列 数据容器 , 因此 都可以进行 切片操作 ; 由于 元组 和 字符串 都是 不可更改 数据容器 , 因此...序列切片操作 , 不会影响原来序列 , 而是得到一个新序列 ; 序列切片语法 : 序列变量后 , 使用 中括号 [] 进行切片操作 , 在 中括号中 分别给出 起始下标索引 , 结束下标索引 , 步长...13579 3、代码示例 - 步长为 -1 切片 如果步长设置为 -1 , 则从后向前进行切片 ; 如果步长为负数 , 其起始下标索引 要 大于 结束下标索引 ; 代码示例 : # III....步长为负数 切片 my_str = "123456789" # 字符串切片 从头到尾 步长 -1 slice = my_str[::-1] print(slice) # 987654321 #

17410

Pythonic:递归、回溯等5种方法生成不重复数字整数

看到这样问题,很多人会写出类似(注意,只是类似,我为了使得本文几个函数具有相同调用形式,给demo1和demo2加了点多余东西)下面这样代码: def demo1(data, k=3): ''...现在问题又来了:如果题目稍微修改一下,让选择4个不重复数字组成4位数,肿么办?修改上面的代码,再增加一个嵌套循环来选择第4个数?要是让选择8个呢?再改?...回溯法和递归法往往以代码简洁著称,但是在很多时候确实也比较难理解。难道就真的没有更好办法了吗?...既然选择了Python,那就让我们写一个下面这样Pythonic代码,不用递归,也不用回溯,并且能够实现选择任意个数字来组成整数,OMG!...def demo5(data, k): '''使用枚举组合数方法产生任意位数数字''' from itertools import permutations r = permutations

1.1K70

你写代码一点都不 Pythonic

可能有时候你在论坛上 会看到有人这样说 “你写代码 一点都不 Pythonic” what? Pythonic?...什么是 Pythonic 呢 其实说白了就是你 代码风格 有些人可能之前是 写 Java 或者 C 然后就想用惯有的代码风格 来写 Python 虽然程序可以跑起来 但是不 Pythonic...这样代码能运行 但是 unpythonic pythonic 应该是这样 ? 再比如 我们想根据原有的列表中元素 根据一定规则创建出另一个列表 ?...这里我们将列表中元素×2 组成新列表 而 Pythonic 是这样 ?...又比如 你想将两个变量值进行互换 在 java 中是这样 int temp; temp = a; a = b; b = temp; 而 Pythonic 是这样 a, b = b, a 是不是一下子简洁很多了

40510

python特性 - 切片

Python3 切片 概述 前面我们知晓,有些数据类型可以直接使用索引index来访问序列中元素,同时索引还可以分为正向和负向。 Python中切片操作,也会用到索引。...例如切片操作为[1:3],则只包含index为1和2元素,不包含index为3元素 序列正向index从0开始,倒序切片时,index从-1开始。...二、切片使用 切片使用比较简单,还是通过例子来说明比较直观。...L[0:3] # 注意不包含end ['x','l','p'] >>>L[:3] # start默认为0 ['x','l','p'] # ---------- 取L中间元素...特殊切片操作 下面介绍几个比较特殊一点切片操作。 [::step]:每隔step,取出元素 先通过range()来生成一个0-99整数序列,再每隔5个取出元素。

66910

切片内部实现

,len记录切片访问元素个数(可访问长度) cap允许元素增长个数(切片容量) 创建切片 Go语言中提供make来创建切片,slicemake源码实现如下: func makeslice(et *...(这里长度只是和cap作比较后放入切片结构中)         return slice{p, len, cap} } 第一个参数是数据类型,第二个参数长度,第三个参数是容量,如果只指定长度那么切片容量和长度相等...(容量小于长度切片会在编译时报错) 空切片 1、Go中切片零值是nil 创建一个为nil 字符串切片 var s []string 为nil切片表示 2、创建一个不为nil切片 var s...= []string{} // 或 var s = make([]string, 0) 不为nil切片没有分配任何存储空间,它内存模型如下: 这里需要说明一点,为nil切片和不为nil切片调用...(第二个参数值)中元素复制到目标切片(第一个参数值)中,并返回被复制元素个数,copy 两个类型必须一致,并且实际复制数量等于实际较短切片长度。

1.1K110
领券