IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python考试易错和一些奇怪的思考 -> 正文阅读

[Python知识库]Python考试易错和一些奇怪的思考

关于比较

如果两个列表都全是数,那就可以用>之类的比较

ls1=[30,1,2,0]
ls2=[1,21,133]
ls1>ls2
输出结果:True

分析
依次比较相同位置的元素,如果相同,再比较下一个,本例中,第一个比较的30>1,故对于ls1>ls2的判定为True。如果两个列表所有元素都相同,则认为两列表相等。如果一个列表A(整体)与另一个列表B的前n项(有序)组成的列表相等,则认为B>A。

引申

  • 若ls1=[30,1,2],结果如何?
  • 若ls1=[1,21,133,0],结果如何?
  • 若ls1=[0,30,1,2],结果如何?
  • 若ls1=[‘0’,30,1,2],结果如何?
  • 若ls1=[‘30’,1,2,0] ,ls2=[‘1’,21,133],结果如何?

字符比较大小按Unicode码比较,字符串比较规则与列表比较规则相同

str_a='abc'
str_b='c'
b>a
输出结果:False

关于数据类型

a,b,c,d=[],(),{},''

关于以上代码,请问a,b,c,d分别为什么属于数据类型?

print('type(a)={}\ntype(b)={}\ntype(c)={}\ntype(d)={}'\
      .format(type(a),type(b),type(c),type(d)))

随机抽查:format,\n,\的用法,还记得么?

type(a)=<class 'list'>
type(b)=<class 'tuple'>
type(c)=<class 'dict'>
type(d)=<class 'str'>

关于函数中的操作是否改变函数值

前置芝士
实参:在调用时传递给函数的参数,即传递给被调用函数的值。
形参:在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。

def fun(a,b):#这里的a,b是形参
	...
fun(a,b)#这里的a,b是实参

注:实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。
实例

def add_run(L=None):
	if L is None:
		L=[]
	L.append('Run')
	return L
add_run()
print(add_run(['Lying']))

输出结果:['Lying','Run']

分析
第一个add_run(),其返回值并未被使用,L是其定义的局部变量,在函数结束该次运行后即被释放(free?),故不会影响add_run([‘Lying’])的返回值。
(1)

L=[]
x=3
def fun(x):
	L.append(x)
	x=5
fun(x)
print('L = {}, x = {}'.format(L, x))
输出结果:L=[3], x=3

(2)

l=[1]
def f():
    l[0]=2
f()
print(l)
输出结果:[2]

思考
如果将函数内的l[0]=2改为l[1]=2呢?

IndexError: list assignment index out of range

分析
函数中的x是作为函数里的局部变量,其改变不影响全局变量x的值。但在函数中如果修改列表、字典等之中元素的值,则会引起该全局变量的改变。
其实在 (1) 中,函数内的x是存在歧义的,因为既可以表示引用全局变量x,也可以表示创建一个新的局部变量,所以python默认指定创建一个新的局部变量来消除这一歧义,但对于 (2) 中的列表l而言,l[0] = 2不存在这种歧义,因此直接修改了全局变量。

ls1=[1,2,3,4,5]
ls2=[6,7,8,9,10]
def fun():
	ls1=ls2
	print(ls1)#这里的ls1是一个局部列表
fun()
print(ls1)#这里的ls1是上面那个全局列表
输出结果:
[6,7,8,9,10]
[1,2,3,4,5]

你看明白了吗?

随机抽查:关于global和nonlocal ,给形参设置默认值,使用*a 和 **a方式获取变长实参的区别,以及各种参数传递方式和他们的优先级……这些你还记得吗?

一些关于函数的提醒

  • 将可变对象用作函数实参
    函数的实参传递的是对象的引用,形参则成为指向对象的新引用。对于不可变对象(如元组、字符串和数值),对形参的操作不会影响函数外部的代码。但如果传入的是可变对象(如列表和字典),则对该对象做出的任何改动都会改变该实参在函数外引用的值。函数内部对形参的重新赋值不会影响实参。
def f(n,list1,list2):
    list1.append(3)
    list2=[4,5,6]
    n = n+1
x=5
y=[1,2]
z=[4,5]
f(x,y,z)
print(x,y,z)
输出结果:5 [1, 2, 3] [4, 5]
#一种更具有迷惑性的写法,输出结果与上一个完全相同
def f(n,list1,list2):
    list1.append(3)
    list2=[4,5,6]
    n = n+1
n=5
list1=[1,2]
list2=[4,5]
f(n,list1,list2)
print(n,list1,list2)
  • 函数内的局部变量可以和全局变量名字相同,but,全局变量名不能和函数名相同

关于pop

list1.pop(_)这个空里填的是下标(index),可以是0123和-1-2-3两种都可以。
pop函数的作用:移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

ls=[1,2,3,4,5,6,7]
print(ls.pop(0),len(ls))
输出结果:1 6

关于列表初始化

  • list(列表名)=[(初值)]*n(列表大小)
list_1=[0]*26
  • 话不多说,上代码
ls=[m+n for m in 'AB' for n in 'CD'] #range同理
print(ls)
输出结果:['AC', 'AD', 'BC', 'BD']

关于index

在ls=[1,2,3,3]中,ls.index(3)的输出结果
答案 2
分析
index()函数会在序列中检索参数并返回第一次出现的索引,没找到就会报错。index()函数的完整语法(以字符串检索为例):str<1>.index(str<2>, beg=0<3>, end=len(string)<4>)

<1> 原字符串
<2> 想要检索的子串
<3> 开始索引的位置,默认为0。
<4> 结束索引的位置,默认为字符串的长度

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-10 12:21:06  更:2021-11-10 12:22:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:43:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码