python中的一些实用技巧【持续更新】

一、逆序迭代

#正序:
range(4)
#输出:0,1,2,3

【#逆序方法一:】
reversed(range(4))
输出:3,2,1,0

【#逆序方法二:】
range(3,-1,-1)
#输出:3,2,1,0

【#逆序方法三:列表逆序切片法】
range(4)[::-1]
输出:3,2,1,0

二、两个列表,对应位置相乘

【方法1:】
list1=[1,2,3]
list2=[4,5,6]
list3=list(map(lambda x:x[0]*x[1],list(zip(a1,a2))  ))
输出:
[4,10,18]


【方法2:】
import numpy as np
list3=list(np.multiply(np.array(list1),np.array(list2)))
输出:
[4,10,18]

三、python中可变对象作为函数的参数时,是地址传递;不可变对象,作为参数,是值传递,即不共用同一内存单元。

不可变对象:数字,字符串,元组;
可变对象:列表,字典,自定义类的实例。

举个例子:

# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

a=ListNode(0)
b=a
print(id(a))
print(id(b))

输出:
140392472073496
140392472073496

可见这两个变量指向同一内存单元,python是基于值的管理方式,当给变量赋值的时候,系统会为这个值分配内存空间,然后让这个变量指向这个值,当改变变量的值时,系统会为这个新的值分配另一个内存空间,然后还是让这个变量指向这个新值。

也就是说,C语言中变量变的是内存空间中的值,不变的是地址;而在Python中,变量变的是地址,不变的是内存空间中的值。

猜你喜欢

转载自blog.csdn.net/transformed/article/details/89342968