python-基础知识(函数、列表、元组)

函数

定义:

def 函数名(形参列表):

    函数体

    return 返回值

形参列表中可以有多个形参,多个形参之间用逗号分隔开。

函数体带一级缩进,带有缩进的代码才是函数内部的语句。

return语句并不是必须的

调用

函数名(实参列表) 

实参的个数必须与形参个数相同,通常使用位置传参,也可以使用关键字传参,也可两者混合使用,混合使用时要求位置参数在前,关键字参数在后。 

#定义一个求和函数
def calcSum(beg, end):
    theSum = 0
    for i in range(beg,end+1):
        theSum += i
    print(theSum)



def calc_sum(beg,end):
    the_sum = 0
    for i in range(beg,end):
        the_sum +=i
    return the_sum
        
    
#调用函数
calcSum(1,100)
calcSum(300,400)
calcSum(1,1000)

a1 = calc_sum(1,100)
a2 = calc_sum(300,400)
a3 = calc_sum(1,1000)


在实际编程中,calc_sum( )函数更适合应用。交互性更强,提高代码的健壮性。

关键字传参,可以按照形参的名字传参,顺序可更改。

def test(x,y):
    print(f'x = {x}')
    print(f'y = {y}')
    
test(x=10,y=20)
test(y=50,x=90)

函数中可以有多个return 语句,当执行到return 语句后,函数会立即结束,回到调用位置。

形参的默认值,带有默认值的形参就可以在调用函数的时候,不必传参。要求带有默认值的形参得在形参列表的后面。

def add(x,y,debug=False):
    if debug:
        print(f'x = {x},y = {y}')
    return x+y

result = add(10,20)
print(result)

python中的一个函数可以返回多个返回值,各个返回值之间用逗号隔开,也可以直接赋值多个变量,也可以使用下划线占位。

#写一个函数,返回平面上的坐标
#横坐标,纵坐标
import random


def getPoint():
    x = 40
    y = 9
    return x,y


a,b = getPoint()
_,c = getPoint()

print(a,b)

函数的调用

函数的链式调用:用一个函数的返回值,作为另一个函数的参数。

def isOdd(num):
    if num % 2 == 0:
        return False
    return True

def add(x,y):
    return x+y

print(isOdd(add(3,4)))
#先执行()里面的函数,后执行外面的函数
#换句话说,调用 一个函数,就需要先对他的参数求值

嵌套调用,函数内部调用其他函数。

def a():
    print('函数 a')

def b():
    print('函数 b ')
    a()

def c():
    print('函数 c ')
    b()

def d():
    print('函数 d ')
    c()

d()

函数的栈帧

先打断点,然后右键开始调试,按F7进入函数内部,调试器左下能够看到函数之间的“调用栈”,调用栈里面描述了当前这个代码的函数之间调用关系,每一层这个调用关系就被成为“函数的栈帧”,每个函数的局部变量就在这个栈帧中体现。

每一层栈帧,选中后可以看到里面的局部变量,每个函数的局部变量就保存在对应的栈帧中。调用函数则生成对应的栈帧,函数结束,则对应的栈帧消亡,局部变量也随之消亡。

函数递归

函数自己调用自己。

递归的两个要素:1、递归的结束条件;2、递归的递推公式。

求n的阶乘,非递归法:

#写一个函数,求n的阶乘(n是正整数)

def factor(n):
    result = 1
    for i in range(1,n+1):
        result *= i
    return result

print(factor(5))

 求n的阶乘,递归法:

#用递归求n的阶乘(n为正整数)

def factor(n):
    if n == 1:
        return 1
    return n * factor(n-1)

print(factor(5))

列表、元组

列表和元组的基本概念 :用一个变量来表示多个数据。类似于数组。

列表和元组大部分功能相同,唯一区别在于:

列表是可变的(散装物品):创建好了之后,随时能改。

元组是不可变的(包装物品):创建好了之后,不可修改,只能丢弃旧的,创建个新的元组。

创建列表

1、直接使用字面值来创建。[ ] 就表示一个空的列表

2、使用  list( )  来创建

3、可以在创建列表的时候,在[ ] 中指定列表的初始值,元素之间使用,来分割。可以在同一个列表中存放不同类型的元素。

a = []
print(type(a))

b = list()
print(type(b))

c = [2,3,5,6,[3,5,6]]
print(type(c))
print(c)

用列表名+ [ ] 下表访问运算符来访问列表中的元素可读可修改,[ ] 中间写的整数就被称为“下标”或“索引”,从0开始计数,下标的有效范围是从0到长度-1。下标支持负数,[-1]等价于 len(a)-1。-1就是倒数第一个元素。

可以使用内建函数 len 来获取到列表的长度(元素个数),和字符串类似。

 列表的切片

切片操作时一个较为高级的操作,切片的时候只是取出了原有列表的一个部分,并不涉及到“数据的拷贝”,即速度较快。

通过下标操作是一次取出里面的一个元素。

通过切片,则是一次取出一组连续的元素,相当于得到一个子列表。

使用 [ : ] 的方式进行切片操作。[ ] 里面有两个数字,表示了一段区间。[1:3] 1表示开始区间的下标,3表示结束区间的下标,表示取下标为1 一直到下标为3的元素(包含1,不包含3)是前闭后开的区间[1,3)。

切片操作中可以省略前后边界。当切片中的范围超出有效下标之后不会出现异常,而是尽可能的把符合要求的元素给获取到。

切片操作还可以指定“步长”,也就是“每访问一个元素后,下标自增几步”。步长也可为负数,表示从后往前取。

a = [1,2,3,4]
print(a[1:3])#打印下标[1,3)的元素
print(a[1:])#省略后面下标的操作,打印下标[1,3]的元素
print(a[:2])#省略前面下标的操作,打印下标[0,2)的元素
print(a[:-1])#-1表示最后一个元素,打印[0,3)的元素
print(a[:])#表示取所有元素

b = [1,2,3,4,5,6,7,8,9,0,10,11,22,33,44]
print(b[::2])#2表示步长,每隔两个元素取一个元素
print(b[::-2])#从后往前取元素,每两个元素取一个元素

 

列表元素的遍历操作

遍历:把一个列表里面的每个元素都依次取出来并进行某种操作。

1、用for循环遍历,elem =>element 元素

#使用for循环遍历
a = [1,2,3,4,5,6,7,8,9,0]
for elem in a:
    print(elem)

2、使用for循环遍历,通过下标的方式,还可对列表元素进行修改

#使用for循环遍历,通过下标的方式
a = [1,2,3,4,5]
for i in range(0,len(a)):
    print(a[i])
    a[i] = a[i] + 10
print(a)

 3、使用while 循环,通过下标遍历

a = [1,2,4]
i = 0
while i < len(a):
    print(a[i])
    i +=1

 列表的插入操作

使用 append 方法,向列表末尾插入一个元素(尾插)。

此处的append是搭配列表对象来一起使用的,而不是作为一个独立的函数。type、print、input、len,自定义函数等都是独立的函数。要搭配对象(即变量)来使用的函数(function),也叫做方法(method)。

alist = [1,2,3,4]
alist.append("hello")
print(alist)

 

 

使用 insert 方法,向任意位置插入一个元素。insert 第一个参数表示要插入元素的下标。

alist = ["hello","word","!",4,5]
alist.insert(-1,"wangwnag")
print(alist)

 列表的查找和删除

查找元素

使用 in 操作符,判定元素是否在列表中存在,返回值是布尔类型。

alist = [1,2,3,4,5]
print( 2 in alist) # 运行结果:True
print("hello" in alist)# 运行结果False
print(2 not in alist)#运行结果 False

使用 index 方法,查找元素在列表中的下标,返回值是一个整数。如果元素不存在,则会抛出异常。

alist =  [0,1,2,3,"hello"]
print(alist.index(2))   # 运行结果为: 2
print(alist.index("hello"))  #运行结果为:  4

删除元素

使用pop 方法删除最末尾元素。

alist = [1,2,3,4,5]
alist.pop()
print(alist)
#运行结果为[1,2,3,4]

pop 也能按照下标来删除元素。

alist = [0,1,2,3,4,"hello"]
alist.pop(-1)
print(alist)
#运行结果为[0,1,2,,3,4]

使用 remove 方法,可以按照值来进行删除。

alist = ["aa","bb",'cc','dd']
alist.remove("aa")
print(alist)
#运行结果为:['bb', 'cc', 'dd']

列表的拼接

使用 + 能够把两个列表拼接在一起,会生成一个新的列表,而不会影响旧列表的内容。

a = ['hello']
b = ['word']
print(a + b)
#运行结果:['hello', 'word']

使用  extend 方法,相当于把一个列表拼接到另一个列表的后面,会修改被拼接的列表,而不该表拼接列表的内容。

a = [0,1,2,3]
b = [3,4,5,6]
a.extend(b)
print(b)
print(a)
#运行结果为:
#[3, 4, 5, 6]
#[0, 1, 2, 3, 3, 4, 5, 6]

元组的操作

创建元组,元组中元素可以为任意类型。

#1.创建元组
a = ()
print(type(a))
b = tuple()
print(type(b))
#2.创建元组时,指定初始值
c = (1,2,3,4)
print(type(c))
print(c)
#运行结果为:<class 'tuple'>
#<class 'tuple'>
#<class 'tuple'>
#(1, 2, 3, 4)

可以通过下标访问元组中的元素,下标是从0开始到len-1结束,也可为负数,取倒数元素。

a = (0,1,2,3,4,5)
print(a[2])
print(a[-1])
#运行结果: 2   5

通过切片来获取元组中的一部分,操作和列表相同。

a = (1,2,3,4)
print(a[1:3])
#运行结果为为:(2, 3)

可以用 for循环等方式来进行遍历。

a = (1,2,3,4,5,6)
for elem in a:
    print(elem)

可以使用 in 来判定元素是否存在,使用 index 查找元素的下标。

a = (0,1,2,3,'hello',4)
print(3 in a)
print( a.index(4))

#运行结果:True
# 5

可以使用 + 来拼接两个元组,同列表操作。

a = (1,2,3,4)
b = (5,6,7,8)
print(a+b)

元组只支持“读”操作,不支持“修改操作”。因此 append、pop、extend方法等在元组中不存在。

当进行多元赋值的时候,其实本质上是按照元组的方式来进行工作的。

def getPoint():
    x = 10
    y = 30
    return x,y

a , b = getPoint()
print(type(getPoint()))

#运行结果为:<class 'tuple'>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值