python实用小技巧,你都知道吗?

197 阅读3分钟

1.eval()函数

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

# 字符串转换成列表
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=' ')

单引号中可以加入其他内容在每个单个数据后都有显示。

python学习交流裙】

3.继续 ( \ )

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

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

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

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

5.神奇的for else

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

for i in range(2): 
    print(i) 

else: 

    print('over!')

结果是:

0
1
over

可以看到for语句执行完之后else里的内容也被执行,然而继续做实验:

for i in range(2):

    break

else:

    print("Over!")

结果:

可以看到的是当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函数.