`

Python中你不知道的特性

阅读更多

无穷嵌套的列表

 

>>> a = [1, 2, 3, 4] 
>>> a.append(a) 
>>> a 
[1, 2, 3, 4, [...]] 
>>> a[4] 
[1, 2, 3, 4, [...]] 
>>> a[4][4][4][4][4][4][4][4][4][4] == a 
True

 

无穷嵌套的字典

>>> a = {} 
>>> b = {} 
>>> a['b'] = b 
>>> b['a'] = a 
>>> print a 
{'b': {'a': {...}}}

 

列表重构

>>> l = [[1, 2, 3], [4, 5], [6], [7, 8, 9]] 
>>> sum(l, [])
[1, 2, 3, 4, 5, 6, 7, 8, 9]

或者

import itertools 
data = [[1, 2, 3], [4, 5, 6]] 
list(itertools.chain.from_iterable(data))

再或者

from functools import reduce
from operator import add
data = [[1, 2, 3], [4, 5, 6]]
reduce(add, data)

 

 

字典生成

>>> {a:a**2 for a in range(1, 10)}
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

 

类中方法重置

class foo:
   def normal_call(self):
       print("normal_call")
   def call(self):
       print("first_call")
       self.call = self.normal_call


>>> y = foo()
>>> y.call()
first_call
>>> y.call()
normal_call
>>> y.call()
normal_call

获取类属性
class GetAttr(object):
   def __getattribute__(self, name):
       f = lambda: "Hello {}".format(name)        return f
>>> g = GetAttr()
>>> g.Mark()
'Hello Mark'

集合
>>> a = set([1,2,3,4])
>>> b = set([3,4,5,6])
>>> a | b # Combining{1, 2, 3, 4, 5, 6}
>>> a & b # Intersection{3, 4}
>>> a < b # SubsetsFalse>>> a - b # Variance{1, 2}
>>> a ^ b # The symmetric difference{1, 2, 5, 6}

集合定义必须使用set关键字, 除非使用集合生成器

{ x for x in range(10)} # Generator sets

set([1, 2, 3]) == {1, 2, 3} set((i*2 for i in range(10))) == {i*2 for i in range(10)}

 

比较操作

>>> x = 5
>>> 1 < x < 10
True
>>> 10 < x < 20
False
>>> x < 10 < x*10 < 100
True
>>> 10 > x <= 9
True
>>> 5 == x > 4
True

 

动态创建新类

>>> NewType = type("NewType", (object,), {"x": "hello"})
>>> n = NewType()
>>> n.x'hello'

另一个普通版本

>>> class NewType(object):
>>>     x = "hello"
>>> n = NewType()
>>> n.x"hello"

 

条件赋值

x = 1 if (y == 10) else 2 
x = 3 if (y == 1) else 2 if (y == -1) else 1  

 

变量解包

>>> first,second,*rest = (1,2,3,4,5,6,7,8)
>>> first # The first value1
>>> second # The second value2
>>> rest # All other values
[3, 4, 5, 6, 7, 8]

>>> first,*rest,last = (1,2,3,4,5,6,7,8)
>>> first1>>> rest
[2, 3, 4, 5, 6, 7]
>>> last8
列表元素的序号
>>> l = ["spam", "ham", "eggs"]
>>> list(enumerate(l)) 
>>> [(0, "spam"), (1, "ham"), (2, "eggs")]
>>> list(enumerate(l, 1)) # 指定计数起点
>>> [(1, "spam"), (2, "ham"), (3, "eggs")]

 

异常捕获中使用else

try: 
  function()
except Error:  # If not load the try and declared Error
else:  # If load the try and did not load except
finally:  # Performed anyway

 

列表拷贝

 

错误的做法

>>> x = [1, 2, 3]
>>> y = x
>>> y[2] = 5>>> y
[1, 2, 5]
>>> x
[1, 2, 5]

 

正确的做法

>>> x = [1,2,3]
>>> y = x[:]
>>> y.pop()3>>> y
[1, 2]
>>> x
[1, 2, 3]

 

对于递归列表的做法

import copy
my_dict = {'a': [1, 2, 3], 'b': [4, 5, 6]} 
my_copy_dict = copy.deepcopy(my_dict)

 

英文原文: https://www.devbattles.com/en/sand/post-1799-Python_the_things_that_you_might_not_know

译者: 诗书塞外

分享到:
评论

相关推荐

    深入理解Python特性_1592298155816.pdf,深入理解python特性pdf,Python

    这份名为"深入理解Python特性_1592298155816.pdf"的文档,显然是为了帮助读者更全面地掌握这门语言的核心特性。 首先,Python的动态类型系统是其主要特点之一。这意味着在编写代码时,我们不需要预先声明变量的类型...

    python 学习资源包(python核心编程第二版/dive into python/python3新特性)

    总的来说,这个学习资源包提供了一个全面的Python学习路径,从基础知识到高级技巧,从Python 2到Python 3的新特性,应有尽有。无论是初学者还是有经验的开发者,都能从中受益匪浅。通过阅读和实践这些材料,你将能够...

    python3.10中文使用手册

    Python 3.10 是 Python 语言的最新版本,提供了许多新的特性和改进。 概述 Python 3.10 中文使用手册提供了 Python 语言的详细文档,涵盖了语言的基本语法、数据类型、控制结构、函数、模块、异常处理等方面的内容...

    Python实用教程:Python基础,Python高级特性,面向对象编程,多线程,数据库,数据科学,Flask,爬虫开发教程

    Python实用教程:Python基础,Python高级特性,面向对象编程,多线程,数据库,数据科学,Flask,爬虫开发教程。内部含有学习笔记、MD文档、项目教程、笔记文档 Python实用教程:Python基础,Python高级特性,面向...

    Python3.7.3中文离线文档HTML版

    Python3.7.3中文离线文档HTML版是Python编程者不可或缺的参考资料,它提供了全面、详尽的Python 3.7.3版本语言特性和库函数的解释。这个文档集合了Python的所有核心概念、语法结构、标准库以及扩展模块的说明,帮助...

    Python环境下利用matplotlib绘制发动机万有特性曲线.zip

    压缩包中的图是根据实际采集到的发动机数据(出于保密,无法上传),采用多元线性回归拟合绘制的图。其中多元线性回归主要是调用sklearn库来完成,绘图部分主要调用matplotlib。因为是自己看函数文档,一点一点手写...

    Python中文操作手册

    这个手册覆盖了Python 2.4版本,虽然Python已经发展到3.x系列,但2.4版本仍然是许多遗留系统和项目的基石,因此了解其特性和用法依然有价值。以下是手册可能包含的一些关键知识点: 1. **基础语法**:包括变量定义...

    列表特性.py(Python之列表特性)

    根据自学总结的Python入门经验(列表特性),方便刚入门Python的同学加深理解列表的基础。

    Python中的元组:特性、用途及其与列表的区别

    在Python中,元组(Tuple)和列表(List)是两种常用的数据结构,它们都可以存储一系列的元素。然而,尽管它们在某些方面相似,但它们在特性和使用场景上有着本质的区别。本文将深入探讨Python中的元组,以及它与...

    Python3.8官方中文API参考手册

    这套手册是Python开发者不可或缺的资源,无论你是初学者还是经验丰富的开发者,都可以从中找到你需要的信息,提高编程效率,解决实际问题。通过深入学习这些文档,你可以更深入地理解Python3.8的内部机制,提升编程...

    Python3.6+中文文档.pdf

    Python 中许多最引人瞩目的特性,并且会给你一个关于语言特色和风格的认识。读完之后,你将能够阅读 和编写 Python 模块或程序,并为以后使用 Python 参考手册 继续学习诸多 Python 模块库做好准备。

    Python安装文件 Python 3.8

    2. **位置只有参数(Positional-only arguments)**: 在Python 3.8中,函数可以接受位置只有参数,这意味着这些参数不能通过关键字传递,只能按位置顺序传递。这样可以更清晰地定义函数接口,避免参数混淆。 3. **...

    python3.8中文帮助文档 离线CHM版

    4. **异常处理**:Python 使用 try-except-finally 结构来处理程序中的错误,文档中详述了各种内置异常类型及其用法。 5. **标准库**:Python 有一个庞大的标准库,包括字符串操作、文件和I/O、网络通信、数据结构...

    Python 编程手册 (CHM),python编程手册 中文pdf,Python源码.zip

    Python编程手册的中文PDF版本则为不熟悉英文的用户提供了一种便利的学习途径,确保语言障碍不会成为学习过程中的难题。PDF格式使得手册可以在各种设备上阅读,包括电脑、平板和手机,便于随时随地学习。 在Python的...

    python中文api文档+学习笔记

    这不仅可以帮助用户深入理解Python的语法和API,还可以通过学习笔记了解实际应用中的技巧和经验,对于提升Python技能和解决实际问题非常有帮助。无论你是初学者还是资深开发者,这个资源集合都是值得珍藏和参考的...

    python3.7 官方中文手册文档全套

    对于有经验的开发者,深入阅读高级主题和标准库部分,可以提升对Python特性和最佳实践的理解。 在`docs-pdf`文件中,你可以找到PDF格式的官方文档,便于离线阅读和查阅。每个章节都包含了丰富的示例和解释,帮助...

    python3中文文档

    其中,列表和字典的可变性,元组的不可变性,以及集合的无序不重复特性,都是在实际编程中经常用到的特性。 3. **控制结构**:Python3的流程控制包括条件语句(if-elif-else)、循环(for、while)、异常处理(try-...

    Python中文帮助手册

    其次,Python的面向对象编程特性也是手册中的重要部分。这涉及到类的定义、对象的创建、继承、封装、多态等概念。手册会提供实例来展示如何设计和实现面向对象的程序。 在函数和模块部分,手册会涵盖Python的内置...

    Python-Python到python编译器允许您在旧版本中使用Python36功能

    总的来说,这样的编译器是Python生态中的一种实用工具,它促进了代码的兼容性,使开发者能够在不牺牲效率的情况下充分利用新版本的特性。对于那些无法或不愿升级Python环境的项目,这类工具提供了宝贵的解决方案。...

Global site tag (gtag.js) - Google Analytics