python小技巧(持续更新)

1.eval()函数

eval函数就是实现list、dict、tuple与str之间的转化,这在爬虫处理数据时十分有用。python

# 字符串转换成列表
a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
print(type(a))
b = eval(a)
print(b)

# 字符串转换成字典
a = "{1: 'a', 2: 'b'}"
print(type(a))
b = eval(a)
print(type(b))
print(b)

# 字符串转换成元组
a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
print(type(a))
b=eval(a)
print(type(b))
print(b)

2.print格式控制不换行

python2中用print x,的方法控制不换行,而在python3中print变成了一个函数以后就行不通了,因此变成了print (x,end=' ')express

单引号中能够加入其余内容在每一个单个数据后都有显示。数组

 

3.继续 ( \ )

一行过长的语句可使用反斜杠分解成几行函数

有两种例外状况能够不用反斜杠也能够跨行。在使用闭合操做符时,例如小括号、中括号、大括号时能够多行书写。另外就是三引号包括下的字符串也能够跨行书写。code

4.同一行书写多个语句 (;)

分号容许将多个语句写在同一行上。例子:import sys;x  = 'foo'; sys.stdout.write(x + '\n'),这个输出的结果是fooblog

5.神奇的for else

学过C语言的都知道else不能脱离其余语句单独存在,在Python中else居然和for联用,这是什么骚操做?咱们来作个实验:
 字符串

for i in range(2): 

    print(i) 

else: 

    print('over!')

结果是:原型

0
1
over

能够看到for语句执行完以后else里的内容也被执行,然而继续作实验:it

for i in range(2):
    break
else:
    print("Over!")

结果:io

 

能够看到的是当for循环里执行了break的状况下else里的东西就也不会被执行了,这有什么用呢??例以下面这段代码:
 

for i in range(5):
    if (a[i+1]>a[i]):
        break
else:
    return

当这串数组原本就是有序的时,for循环里的break不会被执行,直接return,达到了若是有序就不进行操做的目的,若是执行到了break则说明它不是按有序排列的,则再跳过else执行后续代码。有用!

6.ASCII码和字符相互转化

print(ord('a'))#参数为单个字符

print(chr(97))#参数为ASCII码值

#函数能够嵌套使用,例如大小写转换:
print(chr(ord('a')-32))

#还能够实现字符型数字和int型数字转换:
print(chr(ord('1')+1))

以上代码结果为:

97
a
A
2

7.map()函数

list_1 = ['a','b','c']
list_2 = list(map(ord,list_1))
print(list_2)#[97,98,99]
#map()函数的结果是一个新的列表而不是修改了原来的列表
x = list_2 is list_1
print(x)#False

看以上代码,map()的原型是map(function, iterable, …),它的返回结果是一个列表。它能够改变原来列表的每个值返回一个新的列表,只须要传入函数便可。

list_1 = ['a','b','c']
list_2 = list(map(ord,list_1))
print(list_2)#[97,98,99]
x = list_2 is list_1
print(x)#False
list_3 = ['d','e','f']
#  列表转成字符串
#   "".join(list)      ""中是用来添加字符的,而后用添加的字符将列表中的元素链接成字符串
str3 = ",".join(list_3)
print(str3)#d,e,f

8.lambda表达式

lambda函数有以下特性:

        1.lambda函数是匿名的:所谓匿名函数,通俗地说就是没有名字的函数。lambda函数没有名字。

        2.lambda函数有输入和输出:输入是传入到参数列表argument_list的值,输出是根据表达式expression计算获得的值。

        3.lambda函数通常功能简单:单行expression决定了lambda函数不可能完成复杂的逻辑,只能完成很是简单的功能。因为               其实现的功能一目了然,甚至不须要专门的名字来讲明。

示例:

# lanmbda表达式
add = lambda x, y: x+y
print(add(1, 2))
#结果:
3

和map()连用很好用:

map(lambda x: x+1, [1, 2,3])

还能够将lambda函数做为参数传递给其余函数,相似sorted函数和filter函数.