python学习笔记5-高级语法

一、切片

基本语法:对象名称【开始索引: 结束索引 :步长】

注意:

* 这三个点都可以省略,开始省略为0,结束省略为全部,步长省略为1。

* 它们是个左闭右开【开始:结束)不包括结束这个值。

* 索引可以为正负:正数:从左边开始;负数:从右边开始。

1、访问:使用切片完成访问功能。

x = [2,3,6,7,8,34,4,32,25]

#  切取单个元素
print(x[1])     #  3
print(x[-2])    #  32

#  窃取整个对象
print(x[:])
print(x[::])    #  前两种效果一样
print(x[::-1])  #  逆序

#  多层切片
print(x[3:6][0:2][1])
#  [7,8,34,4] -->  [7,8] -->  [8]

2、插入

# 在尾部增加一个或者多个元素
x = [9,8,7,666]
x[3:] = [35,25]  #  [9,8,7,35,25]
x[4:] = [35,25]  #  [9,8,7,666,35,25]
print(x)

# 在首部插入元素
x1 = [9,7,8]
x1[:0] = [666,999]
print(x1)       #  [666,999,9,7,8]

# 在中间指定位置插入元素
x2 = [9,7,8]
x2[1:1] = [666,999]    # 在0和1之间插入
print(x2)      # [9,666,999,7,8]

3、修改

#  长度不一致
x = [0,1,2,3,4,5,6]
x[3:6] = [77,88,99,11,22,33]
print(x)

x = [0,1,2,3,4,5,6]
print(x)
x[3:6] = [999]


#  不相邻的位置替换
x = [1,2,3,4,5,6,7,8,9]
x[::2] = [0,0,0,0,0]     # 这时候0就要对应存在的数量,否则会报错。
# x[::2] = [0]*5

4、删除

# 剔除操作
x = [9,8,7,666,1,5,6,70]
x[:5] = []
print(x)
#  [5, 6, 70]

# 连续删除
x1 = [1,2,3,4,5,6]
del x1[:4]
print(x1)
# [5, 6]

# 隔位删除
x3 = [9,8,7,666,1,5,6,70]
print(x3)
print(x3[::3])
del x3[::3]
print(x3)
#  [9, 8, 7, 666, 1, 5, 6, 70]
#  [9, 666, 6]
#  [8, 7, 1, 5, 70]

二、map/reduce

#  map函数
def lifang(x):
    return x**3
a = [7,8,9]
y = map(lifang,a)
print(list(y))   # 需要用list将map对象处理成列表
#  [343, 512, 729]


#  reduce
from functools import reduce
def mini(x,y):
    z = x if x > y else y #如果x大于y,则输出下,否则输出y
    return z
a = [34,5,6,4,5,67,67,34,57,345,7,54,7]
y = reduce(mini,a)
print(y)
#  345

三、闭包

# 闭包
'''普通例子'''
def balance(kg,dj):
    return (kg-0.1)*dj
banana = balance(10.1,5)
print(banana)
banana2 = balance(10.1,5)

'''闭包例子:
1)函数里面又有函数
2)内函数一定用到了外函数的变量
3)外函数的返回值是内函数
'''
def dianzicheng(danjia):
    def jisuan(zhongliang):
        return (maozhong-0.1)*danjia
    return jisuan
apple = dianzicheng(3)
'''
等价于def jisuan(maozhong):
        return (maozhong-0.1)*3
'''
print(apple(10.1))

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值