Python-01 列表 & 小技巧

2022-05-02  本文已影响0人  JuliusL

有同时赋值

x,y = y,x

也有条件表达式

small = a if < b else b

level = ('D' if 0 <= scrore < 60 else
         'C' if 0 <= scrore < 100 else
         "请输入 0-100 的分数"
)

循环有else
如果用break跳出循环,不会执行else
可以非常容易检测到循环的退出状况

while i<5:
  i+=1
else:
  print("循环条件不再为真时执行")

for 变量 In 可迭代对象
int变量不是一个可迭代对象
range(int变量)可以生成一个可迭代对象

range(stop)
range(start,stop)
range(start,stop,step)

列表

python的下标可以越界
a[-1]可以表示最后一个下标
-1是倒序找索引的意思,也可以是-2、-3...
等价于a[len(x)-1]

切片

a[0:3]  # 取0,1,2下标
a[:3]  # 到第三个元素结束
a[3:] #从第三个元素开始
a[:]  #获取整个列表
a[0:6:2] #第二个冒号后面的数字是跨度值
a[::2] # 跨度2打印整个循环
a[::-1] #将整个列表倒序输出 

增-追加

a.append('a')
a.extend(可迭代对象)
#👇用切片实现
a[len(a):]=[6]  #翻译:将可迭代对象[6]赋值给a末尾的切片

增-插入

a.insert(1,2) #第一个参数是下标,第二个参数是插入值

# 1. 如果列表中存在多个匹配的,只删第一个
# 2. 如果不存在,会报错
a.remove(1)
# 删除下标为0的元素
a.pop(0)
# 清空 
a.clear()

a[0] = 'a'
# 1. 将=号左边的指定内容删除
# 2. 将包含在=右边的可迭代对象片段插入左边被删的位置
a[3:] = [1,2,3]

# 3在列表中出现的次数
a.count(3)
# 查元素a的索引
a.index('a') 

列表的扩展方法

a.sort()
a.reverse()
a.sort(reverse=True)
b = a.copy()
b = a[:] #等于a.copy() 都是浅拷贝

import copy
# 用copy模块实现浅拷贝
b = copy.copy(a) 
# 用copy模块实现深拷贝
b = copy.deepcopy(a)

列表推导式
效率比步进来运行for循环会更快
语法:
[ expression for target in iterable ]

a = [ i * 2 for i in a]

带条件
[ expression for target in iterable if condition ]
顺序是先执行 for 后执行 if 最后执行左侧表达式

a = [ i * 2 for i in a if i %2 == 0 ] 

嵌套循环

a = [ col for row in matrix for col in row ]

# 笛卡尔乘积
[ x * y for x in 'abc' for y in 'def' ]

终极表达式
[ expression
for target1 in iterable1 if condition1
for target2 in iterable2 if condition2
...
for targetN in iterableN if conditionN ]

[[x,y] for x in range(10) if x % 2 == 0 for y in range(10) if y % 3 == 0 ]

代码原则:
Keep It Simple & Stupid

上一篇 下一篇

猜你喜欢

热点阅读