练习题
一.将0到10中的偶数拼接成一个字符串输出
例如输出02468
a = [str(i) for i in range(0,10) if i%2==0] print(''.join(a))
结果
02468
二.有字符串:abc,,11dab,找出重复的字母或者数字,并统计重复次数
a重复2次;b重复2次;1重复2次
1.先去掉特殊字符,用filter函数去掉特殊字符
list(filter(str.isalnum,s))
2.再用set函数生成一个新的list,去掉重复的字母或者数字
set(list(filter(str.isalnum,s)))
3.找出重复的字母或者数字,用count函数统计字母或者数据出现的次数,超过1次就是重复出现
完整代码:
s = "abc,,11dab" a1 = list(filter(str.isalnum,s)) b = set(a1) for i in b: if a1.count(i) > 1: print("字符:%s,重复次数:%s"%(i,a1.count(i)))
输出结果:
字符:b,重复次数:2 字符:a,重复次数:2 字符:1,重复次数:2
实现2:
s = "abc,,11dab" a1 = list(filter(str.isalnum,s)) b = set(a1) c = {} for i in b: if a1.count(i) > 1: c[i] = a1.count(i) print(c)
输出结果:
{'1': 2, 'b': 2, 'a': 2}
三.字符串:abbacd,找出不重复的第一个字符
输出c
1.生成一个没有重复元素新的list,并且保持生成的list顺序不变
如果用set函数生成的新的list每次的顺序都是变化的,不利于我们实现找出不重复的第一个字符
使用如下方法保证新生成的list顺序与字符串顺序一致
s = "abbacd" b = list(s) b1 = list(set(b)) b1.sort(key=b.index) print(b1)
输出结果:
['a', 'b', 'c', 'd']
2.再根据新生成的list去字符串s中统计每个元素重复的次数,找到第一个不重读的字符,打印出元素
代码如下:
s = "abbacd" b = list(s) b1 = list(set(b)) b1.sort(key=b.index) print(b1) c = {} for i in b1: if s.count(i) == 1: c[i] = s.count(i) break
for j in c.keys(): print(j)
输出结果:c
四.整型数组排序 1,2,23,44,51 最后得到11223445
思路:将整型数组转换成字符串,再将字符串转换成数组,最后对数组进行排序
1.将整型数组转换成字符串
L1 = [1,2,23,44,51] a = ''.join(map(str,L1))
2.将字符串转换成数组
L2 = list(a)
3.对数组进行排序
L2.sort() s = ''.join(L2) print(s)
输出:11223445
五.如何获取list中最后一个元素
答案:list[-1]
六.读取文件,每一行有一个字段为数字,按数字大小排序,输出整个文档
wj.txt
1amndjkakkd,ksdllsksdf
sdlkslsd2222lslkdlsfkssds
sdkl,456sdlksdlkfslfkdlsk
sfsdfsfdsfdsfdsfdsdsf78
实现代码:
import re L = [] for line in open("wj.txt","r").readlines(): # print(line.strip("\n")) m = re.findall(r'\d+',line.strip("\n")) # print(m[0]) L.append(int(m[0])) L.sort() for i in L: for j in open("wj.txt","r").readlines(): if str(i) in j: with open("wj1.txt","a") as f: f.write(j+'\n')
结果:
1amndjkakkd,ksdllsksdf
sfsdfsfdsfdsfdsfdsdsf78
sdkl,456sdlksdlkfslfkdlsk
sdlkslsd2222lslkdlsfkssds