python笔记(列表推导式)
1.split函数补充
split():字符串切割
该函数默认以空格为分割符,例如:
a='My name is LT'
b=a.split()
print(b)
[‘My’,‘name’,‘is’,‘LT’]
split()的括号中可以设置分割符,例如:
a='My%name%is%LT'
b=a.split('%')
print(b)
[‘My’,‘name’,‘is’,‘LT’]
当然也可以设置其分割的份数,例如:
a='My name is LT'
b=a.split(' ',1) #以空格为分割符,切一刀
print(b)
[‘My’,‘name is LT’]
当设置切的刀数超过最多的分割数时,python并不会报错,而是切到最多为止
2.列表推导式
例:打印一个1-6的列表
- 直接手打(最纯真的方法)
number=[1,2,3,4,5,6]
print(number)
- 利用append插入(当列表数字多起来就不好用了)
number=[]
number.append(1) #随后复制黏贴
number.append(2)
number.append(3)
number.append(4)
number.append(5)
number.append(6)
print(number)
- for…in…+range()循环输入(原理同上)
number=[]
for a in range(1,7):
number.append(a)
print(number)
- 对上面的方法进行改善
number=list(range(1,7))
print(number)
上面都是一些基础方法,下面则是更为简洁的列表推导式代码
- 列表内部直接循环
number=[a for a in range(1,7)]
'''
[]中第一个a表示列表中的元素,这是不断在变的
而第二个a是在循环中的迭代容器
a依次被赋予1,2,3,4,5,6的量
'''
print(number)
- 列表推导式中的条件语句
number=[a*a for a in range(1,7) if a%2==0]
'''
列表中的元素为“a*a”
当a为偶数时执行(a%2==0)
a依次被赋予1,2,3,4,5,6的量
'''
print(number)
[4,16,36]
- 当含有else时的语法
number=[a*a
if a%2==0
else a+10
for a in range(1,7)]
'''
当a为偶数时,执行a*a
否则执行a+10
其中a依次被赋予1,2,3,4,5,6
注意一下语法,对a的赋值(for循环)要放在if和else后面
即不能number=[a*a for a in range(1,7) if a%2==0 else a+10]
注意语法!!!
'''
print(number)
[11,4,13,16,15,36]
- 将下列客户清单的所有客户名的first name单独提出来并把首字母小写
names=['Karen Job','Enid Smith','Jodie North']
first_name=[name.split()[0].lower() for name in names]
'''
name依次赋值names中的三个元素
对name进行切开,以空格为分隔符
“[0]”代表切开后去第一个元素(即first name)
.lower()进行小写
'''
print(first_name)
[‘karen’,‘enid’,‘jodie’]
- 信息筛选举例:将分数高于60的人物姓名输出
scores={'Tom':90,'Jimmy':85,
'Kim':40,'William':61}
passed=[name for name, score in scores.items() if score>=60]
print(passed)
[‘Tom’,‘Jimmy’,‘William’]