Python琐碎知识点合集

0、前言:

        有C++基础,本文记录在学习Python时记录的,一些琐碎的需要格外注意的知识点,将会持续更新……

1、小细节:

        a、关于Python2与Python3:

Python 3.0与以前的Python版本有着本质的不同,因为它是第一个与旧版本不兼容的Python版本

        b、关于Python中的变量:

Python中的变量保存的并不是变量的值本身,而是指向该变量地址的指针(非常关键)

——所以Python中的变量类型可以改变; 

——对于+和* 操作,实现的是对于引用的操作而不是值的赋值

例如:t1=(4,5,45)  t2=(6,0,[0,1])    t3=t1+t2   t2[2].append(4)

print(t3) # (4,5,45,6,0,[0,1,4])

对于赋值的逻辑很容易错!!!注意:

2、数据类型:

数字类型之间的关系:

标量:

【Python数据分析基础-2】Python标量类型_程序猿-小菜的博客-CSDN博客_python标量类型

Python中的标量类型_格陵Lan丶-CSDN博客_python标量

数据类型 分为数字型和非数字型。
        数字型包括整型,长整型,浮点型,复数型;
        非数字型包括字符串,列表,元组和字典 ;
列表用 “[ ]” 标识类似 C 语言中的数组
元组用 “( )” 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表
字典用 “{ }” 标识。字典由索引 key 和它对应的值 value 组成,相当于Java里的Map。

非数字型的共同点:都可以使用切片、链接(+)、重复(*)、取值(a[])等相关运算;
非数字型的不同点:列表 可以直接赋值,元组不可以赋值,字典按照 dict[k]=v 的方式赋值。

元组的一种高级的unpacking 方法:只取出tuple中开头的几个元素,剩下的元素直接赋给*rest

EG:values=1,2,3,4,5 a,b,*rest=values

print(rest) # (3,4,5)

List的append、extend以及+ 操作辨析:

 

列表:

 列表的维度相关:

        查看列表维度:(31条消息) Python查看多维数组List的维度_正门大石狮的博客-CSDN博客_python查看list维度https://blog.csdn.net/xiangduixuexi/article/details/107002571

3、运算符:

        a、除法运算符:

                1、“/”运算符 :按照常规数学计算的方式直接得出结果,得到的是浮点数的结果

                2、整数除运算符——‘//’:

                        注意:如果被除数或者除数其中一个为正数,一个为负数,则结果需要向下取余。这里重点说一下向下取余,初学者肯定会和其他编程语言的搞混淆。举个简单例子,在C语言中,-5对2整除运行结果是-2,但是在python程序中,运算结果需要向负无穷靠近,即向下取余,-5//2运行结果为-3。

                3、求余运算符——“%”:

                        这里也是要和C语言程序里的求余运算符区别开。

                        例数学公式:a÷b=c.......d(a为被除数,b为除数,c为商,d为余数)
                        1)在python中,如果a和b均为正数或者均为负数,则按照正常运算得出结果。
                        2)在python中,如果a和b一个是正数,有一个是负数,则按照d=a-b*[a//b],计算余数。
                        例如:5%-2 运行结果为-1,按照公式,5//-2结果为-3,最后求余结果为-1。我们在平时计算数学运算时,5%-2商-2,余1,但是在python中,涉及到//运算,需要向下取余,所以在python中应该商-3,则结果余-1。

        b、成员测试运算符:in

4、语句

        1、同步赋值语句:

                同时给多个变量赋值,例如,实现数值交换可以不使用第三个临时变量来完成:

                x,y=y,x(实际上是使用元组来实现的)

a,b,c =5,6,7

5、运算符与表达式:

        1、关系运算符的连用

                如:1<3 and 3<5等价于1<3<5

6、函数

函数传参的问题:

在Python中,一切皆对象, Python参数传递采用的都是“传对象引用”的方式。实际上,这种方式相当于传值和传引用的一种综合

如果函数收到的是一个mutable objects可变对象(比如字典或者列表)的引用,就能修改对象的原始值,相当于通过“传引用”来传递对象。如

果函数收到的是一个immutable objects不可变对象(比如数字、字符string或者元组tuple)的引用,就不能直接修改原始对象,相当于通过“传值’来传递对象,此时如果想改变这些变量的值,可以将这些变量申明为全局变量
 

7、设置for循环的range函数为小数

python range() 函数可创建一个整数列表,一般用在 for 循环中。
语法:range(start, stop[, step])
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

这里无论是start,stop,step都是整数,如果想循环小数,比如range(0.1,0.5,0.01),就会报错!!

对于小数的处理方法:

1、使用 np.arange() 来解决:

import numpy as np
for i in np.arange(0.1, 0.5, 0.01):
    print(i)

2、np.linspace(a, b, num)

np.linspace(a, b, num)
for i in np.linspace(0.1, 0.5, 5):
    print(i)

参考:(31条消息) python处理问题汇总一(for循环range内设置小数,四舍五入,时间差,读写文件等)_小朱小朱绝不服输的博客-CSDN博客_pythonfor循环步长为小数https://blog.csdn.net/weixin_44052055/article/details/108358654

8、关于对象与对象的引用

a = object()
b = ['apple', 'pitaya', 'grape']

上述代码中,变量a并不是真正的对象,它是对象的引用,相当于记录了对象在堆空间的地址,通过这个地址我们可以访问到对应的对象。

同理,变量b是列表容器的引用,它引用了堆空间上的列表容器,而列表容器中并没有保存真正的对象,它保存的也仅仅是对象的引用。

参考:Python必知坑点(2):嵌套列表的坑 - 腾讯云开发者社区-腾讯云

例子:

scores = [[0] * 3] * 5
print(scores) 
# [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
for i in scores:
    print("子列表",id(i))
    for j in i:
        print("元素",id(j))
'''
子列表 2301508487360
元素 2301500090640
元素 2301500090640
元素 2301500090640
子列表 2301508487360
元素 2301500090640
元素 2301500090640
元素 2301500090640
子列表 2301508487360
元素 2301500090640
元素 2301500090640
元素 2301500090640
子列表 2301508487360
元素 2301500090640
元素 2301500090640
元素 2301500090640
子列表 2301508487360
元素 2301500090640
元素 2301500090640
元素 2301500090640
'''
scores[1][2] = 1
print(scores)
# [[0, 0, 1], [0, 0, 1], [0, 0, 1], [0, 0, 1], [0, 0, 1]]

如上,我们可以看到所有子列表的地址都相同,子列表中的元素地址也都相同

我们对列表进行[[0]* 3] * 5操作时,仅仅是将[0, 0, 0] 这个列表的地址进行了复制,并没有创建新的列表对象。所以,容器中虽然有5个元素,但是这5个元素引用了同一个列表对象

Python那些年:我们踩过的那些坑(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值