python给初学者的一些技巧和知识

简介:

1 一行赋值序列和元组

1
2
3
4
5
6
In [ 11 ]: l  =  [ 'a' 'b' ]
In [ 12 ]: x,y  =  l
In [ 13 ]: x 
Out[ 13 ]:  'a'
In [ 14 ]: y
Out[ 14 ]:  'b'
1
2
3
4
5
6
In [ 15 ]: t  =  ( 1 , 2 )
In [ 16 ]: m,n  = t
In [ 17 ]: m
Out[ 17 ]:  1
In [ 18 ]: n
Out[ 18 ]:  2


2 交换变量

1
2
3
4
5
6
7
In [ 6 ]: m  =  3      
In [ 7 ]: n  =  4      
In [ 8 ]: m,n  =   n,m
In [ 9 ]: m
Out[ 9 ]:  4
In [ 10 ]: n
Out[ 10 ]:  3


3 语句在行内,if 的三目运算

1
2
In [ 19 ]:  print  'Hello'  if  True  else  'World'
Hello
1
2
3
4
5
6
7
In [ 20 ]: a  =  ' ni'  
In [ 21 ]: b  =   a.strip()  if  a.strip()  else  None
In [ 22 ]: b
Out[ 22 ]:  'ni'
In [ 23 ]: a  =  ' '  
In [ 24 ]: b  =   a.strip()  if  a.strip()  else  None
In [ 25 ]: b


4 连接--相同类型的数据可以连接拼接

1
2
3
4
In [ 27 ]: s  =  'my name is: '
In [ 28 ]: msg  =  +  'Andy'
In [ 29 ]: msg
Out[ 29 ]:  'my name is: Andy'
1
2
3
4
In [ 30 ]: l1  =  [ 'Apple' 'orange' ]
In [ 31 ]: l2  =  [ 'Banana' 'Grape' ]
In [ 32 ]: l1  +  l2
Out[ 32 ]: [ 'Apple' 'orange' 'Banana' 'Grape' ]


5 数字技巧

整数和浮点除

1
2
3
4
In [ 33 ]:  5  / 2
Out[ 33 ]:  2
In [ 34 ]:  5.0  / 2
Out[ 34 ]:  2.5

整数和浮点取余数

1
2
3
4
In [ 36 ]:  5  % 2
Out[ 36 ]:  1
In [ 37 ]:  5.00  % 2
Out[ 37 ]:  1.0


6 数字比较和少语言可以如此用法

1
2
3
4
In [ 43 ]:  if  x <  5  and  x > 2 :
    ....:      print  x
    ....:     
3

等于

1
2
3
4
In [ 44 ]:  if  2  < x <  5 :
    ....:      print  x
    ....:     
3


7 同时迭代两个列表(序列)

1
2
3
4
5
6
7
8
9
In [ 46 ]: l1
Out[ 46 ]: [ 'Apple' 'orange' ]
In [ 47 ]: l2
Out[ 47 ]: [ 'Banana' 'Grape' ]
In [ 48 ]:  for  item1, item2  in  zip (l1, l2):
    ....:      print  item1  +  ' vs '  +  item2
    ....:     
Apple vs Banana
orange vs Grape



8 带索引的列表迭代

1
2
3
4
5
In [ 51 ]:  for  index, item  in  enumerate (l1):
    ....:      print  index, item
    ....:     
0  Apple
1  orange
1
2
3
4
5
In [ 52 ]:  for  index, item  in  enumerate (l1):
    ....:      print  index  + 1 , item
    ....:     
1  Apple
2  orange



9 生成列表(列表推到式)

1
2
3
4
5
6
7
8
In [ 53 ]: numbers  =  [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]
In [ 54 ]: even  =  []
In [ 55 ]:  for  number  in  numbers:
    ....:      if  number % 2  = =  0 :
    ....:         even.append(number)
    ....:         
In [ 56 ]: even
Out[ 56 ]: [ 2 4 6 8 ]

等价于一行语句

1
2
3
In [ 59 ]: even  =  [ number  for  number  in  numbers  if  number  % 2  = =  0
In [ 60 ]: even
Out[ 60 ]: [ 2 4 6 8 ]


10 字典推导(只使用 python 2.7版本 不适合以下版本)

1
2
3
4
names  =  [ 'andy' 'jack' 'tom' 'john' ]
=  {key: value  for  value, key  in  enumerate (names)}
>>> d
{ 'john' 3 'andy' 0 'jack' 1 'tom' 2 }



11 列表转字符串

1
2
3
4
In [ 64 ]: l1
Out[ 64 ]: [ 'Apple' 'orange' ]
In [ 66 ]:  "," .join(l1)
Out[ 66 ]:  'Apple,orange'


12 字符串转列表

1
2
3
In [ 67 ]: ids  =  "4,57,9,22,31"
In [ 68 ]: ids.split( ',' )
Out[ 68 ]: [ '4' '57' '9' '22' '31' ]


13获取列表的子集(切片)

1
In [ 2 ]: x  =  [ 1 , 2 , 3 , 4 , 5 , 6 ]


获取前三个

1
2
In [ 3 ]: x[: 3 ]
Out[ 3 ]: [ 1 2 3 ]


获取index=0 到 index=4的

1
2
In [ 4 ]: x[ 1 : 5 ]
Out[ 4 ]: [ 2 3 4 5 ]


获取后面3个

1
2
In [ 5 ]: x[ - 3 :]
Out[ 5 ]: [ 4 5 6 ]

获取奇数(从第一个到最后一个,步长为2)

1
2
In [ 6 ]: x[:: 2 ]
Out[ 6 ]: [ 1 3 5 ]


获取偶数(从第一个到最后一个,步长为2)

1
2
In [ 7 ]: x[ 1 :: 2 ]
Out[ 7 ]: [ 2 4 6 ]


倒序

1
2
In [ 8 ]: x[:: - 1 ]
Out[ 8 ]: [ 6 5 4 3 2 1 ]


14 合并列表zip

n个列表通过zip函数后,返回一个n个元素组成的元组形式的列表(列表长度为最短的那个列表)

1
2
3
4
5
6
In [ 23 ]: l1
Out[ 23 ]: [ 1 2 3 4 ]
In [ 24 ]: l2
Out[ 24 ]: [ 6 7 8 9 ]
In [ 25 ]:  zip (l1,l2)
Out[ 25 ]: [( 1 6 ), ( 2 7 ), ( 3 8 ), ( 4 9 )]
1
2
In [ 17 ]: [x + for   x,y   in  zip (l1,l2)]
Out[ 17 ]: [ 7 9 11 13 ]


15 序列的映射map 

map(function, sequence[, sequence, ...]) -> list

多个序列通过function返回后返回一个新的列表,最好是序列的长度要一致(不一致的元素补None)

function 可以为None,那么map功能就和zip一样了

1
2
In [ 27 ]:  map ( None ,l1,l2)
Out[ 27 ]: [( 1 6 ), ( 2 7 ), ( 3 8 ), ( 4 9 )]
1
2
In [ 28 ]:  map ( lambda  x,y:x  + y , l1,l2)
Out[ 28 ]: [ 7 9 11 13 ]



16 插入一条常见知识,程序中出现中文执行程序报错

syntaxError: Non-ASCII character '\xe4' in file test.py on line 7


解决:

1
2
3
4
5
#!/usr/bin/env python
#encoding=utf-8
import  sys
reload (sys)
sys.setdefaultencoding( 'utf-8' )


以上格式肯定是不会出错,注意#encoding=utf-8 一定要在第二行,在其他行不起作用



17 可以定义一个python执行错误的函数,每次执行错误,调用即可

#python 参数输入错误的提示输入函数

1
2
3
4
def  exec_error(msg = None ):
     print  "\ 033 [ 1 ; 31 ; 40mUsage : python xxx.py { 0 | 1 | 2 | 3 | all }\ 033 [ 0m  \n\t \
     0 : None  level project,  1 :level  1  project,  2 :level  2  project,  3 :level  3  project,  all : all  project"
     sys.exit()


18 通过ip地址翻译的主机名的函数

#通过ip或者hostname解析获得hostname,ip

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def  resolve_host(s):
     =  s.split( '.' )
     if  len (l) >  4 :
         return  "-"
     if  len (l)  = =  4 :
         ip  =  s
         try :
             hostname  =  socket.gethostbyaddr(s)[ 0 ]
         except  Exception,e:
             #print "could't look up name by ipaddress:",e
             #sys.exit(1)
             return  '-'
     else :
         return  '-'
     return  hostname



19 filter函数

python自带

常用过滤列表

用法:  filter(函数,列表)

递归传递列表的值到函数中函数返回值为true则作为新列表的元素

1
2
3
In [ 7 ]: l  =  [ 1 , 2 , 3 , 4 , 5 ]
In [ 8 ]:  filter ( lambda  x : x > 3 , l)
Out[ 8 ]: [ 4 5 ]


其实等价于 和生成序列的常用方法效果一样

1
[i  for  in  if  i >  3 ]


实践中的用途:

1
2
3
4
In [ 19 ]: task_id  = 4
In [ 20 ]: tasks  =  [{ "id" : 3 "title" : "three" }, { "id" : 4 "title" : "four" }, { "id" : 5 , "title" : "five" }]
In [ 21 ]:  filter ( lambda  i: i[ "id" = =  task_id ,tasks)
Out[ 21 ]: [{ 'id' 4 'title' 'four' }]


本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1768413如需转载请自行联系原作者

cuizhiliang


相关文章
|
Python C# Java
Python知识梳理
这是个人学习笔记,非教程,内容会有些混乱 极简教程 数据类型 我们可以使用type()函数类获取对象的类型,Python3中内置数据类型包括:None,int,float,complex,str,list,dict,tuple,set,frozenset,range等,Python2中还有long类型,Python中并没有内置数组类型。
12686 0
|
C# 数据库 Python
python一些小知识
1、python连接mssql数据库编码问题   python一直对中文支持的不好,最近老遇到编码问题,而且几乎没有通用的方案来解决这个问题,但是对常见的方法都试过之后,发现还是可以解决的,下面总结了常用的支持中文的编码问题(这些方法中可能其中一个就能解决问题,也可能是多个组合)。
839 0
|
Unix Python
笨办法学 Python · 续 第一部分:预备知识
第一部分:预备知识 原文:Part I: Initial Knowledge 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 你需要学习的第一件事就是一切事情。
1090 0
|
Python
Python知识总结帖
1、面向对象高级编程中----使用__slots__ 注意点:使用__slots__要注意,__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的:
547 0
|
23天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
2月前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
52 14
|
2月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
116 2
|
2月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
126 80
|
2月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。

热门文章

最新文章

推荐镜像

更多