#1.将元祖(123)和集合{5,4,6}合并成一个列表
list((1,2,3))+list({4,5,6})
#2.在列表[1,2,3,4,5]首尾分别添加整型元素7和0
a=[1,2,3,4,5]
a.insert(0,7)
a.append(0)
#3.反转列表 [0,1,2,3,4,5,6,7]
a=[0,1,2,3,4,5,6,7]
b=a.reverse()
b=a[::-1]
#4.反转列表 [0,1,2,3,4,5,6,7] 后给出中元素 5 的索引号
[0,1,2,3,4,5,6,7].[::-1].index(5)
#5.分别统计列表 [True,False,0,1,2] 中 True,False,0,1,2的元素个数,发现python无法区分True和1
a=[True,False,0,1,2]
a.count(True),a.count(False),a.count(0),a.count(1),a.count(2)
#6.从列表 [True,1,0,‘x’,None,‘x’,False,2,True] 中删除元素‘x’,remove参数为值
a=[True,1,0,‘x’,None,‘x’,False,2,True]
for i in range(a.count()):
a.remove('x')
print(a)
#7. 从列表 [True,1,0,‘x’,None,‘x’,False,2,True] 中删除索引号为4的元素,pop参数为索引
a=[True,1,0,‘x’,None,‘x’,False,2,True]
a.pop(4)
print(a)
#删除列表中索引号为奇数(或偶数)的元素,使用del
a=list(range(10))
del a[::2]
a=list(range(10))
del a[1::2]
print(a)
print(b)
print(c)
#清空列表中的所有元素。
a=list(range(10))
a.clear()
#10. 对列表 [3,0,8,5,7] 分别做升序和降序排列。
a=[3,0,8,5,7]
a.sort()
a.sort(reverse=true)
#11.将列表 [3,0,8,5,7] 中大于 5 元素置为1,其余元素置为0
[1 if item>5 else 0 for item in [3,0,8,5,7]]
#12.遍历列表 [‘x’,‘y’,‘z’],打印每一个元素及其对应的索引号
for index,value in enumerate(['x','y','z']):
print('index={},value={}'.format(index,value))
for index,value in enumerate(['x','y','z']):
print('index=%d,value=%s'%(index,value))
#13.将列表 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 拆分为奇数组和偶数组两个列表
a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b=a[1::2]
c=a[::2]
#14. 分别根据每一行的首元素和尾元素大小对二维列表 [[6, 5], [3, 7], [2, 8]] 排序
a=[[6, 5], [3, 7], [2, 8]]
b=sorted(a,key=lambda x:x[0])# 根据每一行的首元素排序,默认reverse=False
c=sorted(a,key=lambda x:x[-1])# 根据每一行的尾元素排序,设置reverse=True实现逆序
#15. 从列表 [1,4,7,2,5,8] 索引为3的位置开始,依次插入列表 [‘x’,‘y’,‘z’] 的所有元素
a=[1,4,7,2,5,8]
a[3:3]=['x','y','z']# 如果写成a[3:4],索引为3的元素2被替换成'x','y','z'
print(a)
#16. 快速生成由 [5,50) 区间内的整数组成的列表。
a=[range(5,50)]
#17. 若 a = [1,2,3],令 b = a,执行 b[0] = 9, a[0]亦被改变。为何?如何避免?
a=[1,2,3]
b=a# 对象a和对象b在内存中是同一个,所以会出现关联
id(a)==id(b)
b=a.copy()# 正确的做法是复制一个新的对象
id(b)==id(a)
#18.将列表 [‘x’,‘y’,‘z’] 和 [1,2,3] 转成 [(‘x’,1),(‘y’,2),(‘z’,3)] 的形式
[(a,b) for a,b in zip(['x','y','z'],[1,2,3])]
#19.以列表形式返回字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中所有的键
a={‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21}
for i in a.keys():
print(i)
#20. 以列表形式返回字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中所有的值
a={‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21}
[key for key in a.values()]
#21. 以列表形式返回字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中所有键值对组成的元组
a={‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21}
[key for key in a.items()]# d.items()返回的类型是,不能使用索引
#22. 向字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中追加 ‘David’: 19 键值对,更新 Cecil 的值为17。
a={‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21}
a.update({‘David’: 19})
a.update({'cecil':17})
#23 删除字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中的Beth键后,清空该字典
a={‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21}
a.pop('Beth')
a.clear()
#24. 判断 David 和 Alice 是否在字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21} 中
d={‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21}
'David'in d
'Alice'in d
#25. 遍历字典 {‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21},打印键值对
a={‘Alice’: 20, ‘Beth’: 18, ‘Cecil’: 21}
for key in d:
print(key,d[key])
#26. 若 a = dict(),令 b = a,执行 b.update({‘x’:1}), a亦被改变。为何?如何避免?
a=dict()
b=a
id(b)==id(a)
b.copy(a)
id(b)==id(a)
#27. 以列表 [‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,‘G’,‘H’] 中的每一个元素为键,默认值都是0,创建一个字典。
a=dict.fromkeys([‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,‘G’,‘H’],0)
#28. 将二维结构 [[‘a’,1],[‘b’,2]] 和 ((‘x’,3),(‘y’,4)) 转成字典
dict([[‘a’,1],[‘b’,2]])
dict(((‘x’,3),(‘y’,4)))
#29. 将元组 (1,2) 和 (3,4) 合并成一个元组
(1,2)+(3,4)
#30. 将空间坐标元组 (1,2,3) 的三个元素解包对应到变量 x,y,z
x,y,z=(1,2,3)
#31. 返回元组 (‘Alice’,‘Beth’,‘Cecil’) 中 ‘Cecil’ 元素的索引号
(‘Alice’,‘Beth’,‘Cecil’).index('Cecil')
#32. 返回元组 (2,5,3,2,4) 中元素 2 的个数
a=(2,5,3,2,4)
a.count(2)
#33. 判断 ‘Cecil’ 是否在元组 (‘Alice’,‘Beth’,‘Cecil’) 中
'Cecil' in (‘Alice’,‘Beth’,‘Cecil’)
#34. 返回在元组 (2,5,3,7) 索引号为2的位置插入元素 9 之后的新元组
(*(2,5,3,7)[::2],9,*(2,5,3,7)[2:])
#35. 创建一个空集合,增加 {‘x’,‘y’,‘z’} 三个元素。
a=set()
a.update({'x','y','z'})
#36. 删除集合 {‘x’,‘y’,‘z’} 中的 ‘z’ 元素,增加元素 ‘w’,然后清空整个集合。
a={'x','y','z'}
a.remove('z')
a.update('w')#a.add('w')
a.clear()
#37. 返回集合 {‘A’,‘D’,‘B’} 中未出现在集合 {‘D’,‘E’,‘C’} 中的元素(差集)
a={'A','D','B'}
b={'D','E','C'}
a.difference(b)#a-b
#38返回两个集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’}
a={'A','D','B'}
b={'D','E','C'}
a.union(b)
#39. 返回两个集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’} 的交集
a={'A','D','B'}
b={'D','E','C'}
a.intersection(b)
#40.返回两个集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’} 未重复的元素的集合
a={'A','D','B'}
b={'D','E','C'}
a.symmetric_difference(b)
#41. 判断两个集合 {‘A’,‘D’,‘B’} 和 {‘D’,‘E’,‘C’} 是否有重复元素。
a={‘A’,‘D’,‘B’}
b={‘D’,‘E’,‘C’}
a.isdisjoint(b)
#判断集合 {‘A’,‘C’} 是否是集合 {‘D’,‘C’,‘E’,‘A’} 的子集
a={‘A’,‘C’}
b={‘D’,‘C’,‘E’,‘A’}
a.issubset(b)
#43. 去除数组 [1,2,5,2,3,4,5,‘x’,4,‘x’] 中的重复元素。
list[set([1,2,5,2,3,4,5,‘x’,4,‘x’])]
#44. 返回字符串 ‘abCdEfg’ 的全部大写、全部小写和大小互换形式。
s='abCdEfg'
s.upper()
s.lower()
s.swapcase()
#45. 判断字符串 ‘abCdEfg’ 是否首字母大写,字母是否全部小写,字母是否全部大写。
s=s='abCdEfg'
s.istitle()
s.isupper()
s.islower()
#46. 返回字符串 ‘this is python’ 首字母大写以及字符串内每个单词首字母大写形式。
s='this is python'
s.capitalize()
s.title()
#47. 判断字符串 ‘this is python’ 是否以 ‘this’ 开头,又是否以 ‘python’ 结尾
s='this is python'
s.startswith()
s.endswith()
#48. 返回字符串 ‘this is python’ 中 ‘is’ 的出现次数
s='this is python'
s.count('is')
#49. 返回字符串 ‘this is python’ 中 ‘is’ 首次出现和最后一次出现的位置。
s='this is python'
s.find('is')#返回首次出现的索引,未找到则返回-1
s.rfind('is')#返回最后一次出现的索引,未找到则返回-1
#50. 将字符串 ‘this is python’ 切片成3个单词
s='this is python'
s.split()
#51. 返回字符串 ‘blog.csdn.net/xufive/article/details/102946961’ 按路径分隔符切片的结果
s='blog.csdn.net/xufive/article/details/102946961'
s.split('/')
#52.将字符串 ‘2.72, 5, 7, 3.14’ 以半角逗号切片后,再将各个元素转成浮点型或整形。
s='2.72,5,7,3.14'
[float(item) if '.' in item else int(item) for item in s.split(',')]
#53. 判断字符串 ‘adS12K56’ 是否完全为字母数字,是否全为数字,是否全为字母,是否全为ASCII码。
s='adS12K56'
s.isalnum()
s.digit()
s.isascii()
#54. 将字符串 ‘there is python’ 中的 ‘is’ 替换为 ‘are’。
s='there is python'
s.replace('is','are')
#55. 清除字符串 ‘\t python \n’ 左侧、右侧,以及左右两侧的空白字符。
s='\t python \n'#strip()函数移除头尾指定字符,默认移除空格
s.lstrip()
s.rstrip()
s.strip()
#56. 将三个全英文字符串(比如,‘ok’, ‘hello’, ‘thank you’)分行打印,实现左对齐、右对齐和居中对齐效果。
s=('ok','hello','thank you')
len_max=([len(item) for item in a])
for item in a:
print('"%s"'%item.ljust(len_max))
s=('ok','hello','thank you')
len_max=([len(item) for item in a])
for item in a:
print('"%s"'%item.rjust(len_max))
s=('ok','hello','thank you')
len_max=([len(item) for item in a])
for item in a:
print('"%s"'%item.center(len_max))
#57. 将三个字符串(比如,‘Hello, 我是David’, ‘OK, 好’, ‘很高兴认识你’)分行打印,实现左对齐、右对齐和居中效果。
s='hello,我是David','ok,好','很高兴认识你'
len_s=[len(item) for item in s]
len_s_gbk=[len(item.encode('gbk'))for item in s]
c_num=[a-b for a,b in zip(lem_s_gbk,len_s)]
len_max=max(len_s_gbk)
for s,c in zip(s,c_num)
print('"%s"'%s.ljust(len_max-c))
s='hello,我是David','ok,好','很高兴认识你'
len_s=[len(item) for item in s]
len_s_gbk=[len(item.encode('gbk') for item in s)]
c_num=[a-b for a,b in zip([len_s_gbk,len_s])]
len_max=max(len_s_gbk)
for s,c in zip(s,c_num):
pring('"%s"'%s.rjust(len_max-c))
s='hello,我是David','ok,好','很高兴认识你'
len_s=[len(item) for item in s]
len_s_gbk=[len(item.encode('gbk') for item in s)]
c_num=[a-b for a,b in zip([len_s_gbk,len_s])]
len_max=max(len_s_gbk)
for s,c in zip(s,c_num):
pring('"%s"'%s.center(len_max-c))
#58. 将三个字符串 ‘15’, ‘127’, ‘65535’ 左侧补0成同样长度。
a=['15','127',''65535]
len_max=max([len(item) for item in a])
for i in a:
print(i.zfill(len_max))
#59. 提取 url 字符串 ‘https://blog.csdn.net/xufive’ 中的协议名。
s='https://blog.csdn.net/xufive'
s1=s.split('/')[0][::-1]
#60. 将列表 [‘a’,‘b’,‘c’] 中各个元素用’|'连接成一个字符串。
s1='|'.join(abc)
#61. 将字符串 ‘abc’ 相邻的两个字母之间加上’-’,生成新的字符串。
'-'.join(abc)
#62. 从键盘输入手机号码,输出形如 ‘Mobile: 186 6677 7788’ 的字符串。
def print_mobile():
num=input('输入你的手机号码:')
print('mobile: %s %s %s'%(num[:3],num[3:7],num[7:]))
#63. 从键盘输入年月日时分秒,输出形如 ‘2019-05-01 12:00:00’ 的字符串。
def print_datetime():
dt=input('请输入年月日时分秒,中间以空格分隔:')
Y,M,D,h,m,s=int(Y),int(M),int(D),int(h),int(m),int(s)
print('%04d-%02d-%02d %02d:%02d:%02d'%(Y,M,D,h,m,s)
#64. 给定两个浮点数 3.1415926 和 2.7182818,格式化输出字符串 ‘pi = 3.1416, e = 2.7183’
'pi=%0.4f,e=%0.4f'%(3.1415926,2.7182818)
#65. 将 0.00774592 和 356800000 格式化输出为科学计数法字符串。
'%e,%E'%(0.00774592,356800000)
#66. 将十进制整数 240 格式化为八进制和十六进制的字符串。
'%O'%240
'%x'%240
#67. 将十进制整数 240 转为二进制、八进制、十六进制的字符串。
bin(240)
oct(240)
hex(240)
#68. 将字符串 ‘10100’ 按照二进制、八进制、十进制、十六进制转为整数。
int('10100',base=2)
int('10100',base=8)
int('10100',base=16)
#69. 求二进制整数1010、八进制整数65、十进制整数52、十六进制整数b4的和。
0b1010+0o65+52+0xb4
#70. 将列表 [0,1,2,3.14,‘x’,None,’’,list(),{5}] 中各个元素转为布尔型。
[bool(item) for item in [0,1,2,3.14,‘x’,None,’’,list(),{5}]]
#71. 返回字符 ‘a’ 和 ‘A’ 的ASCII编码值。
ord('a')
ord('A')
#72. 返回ASCII编码值为 57 和 122 的字符。
chr(57)
chr(122)
#73. 将二维列表 [[0.468,0.975,0.446],[0.718,0.826,0.359]] 写成名为 csv_data 的 csv 格式的文件,并尝试用 excel 打开它。
with open(r'd:\csv_data.csv','w') as fp:
for row in [[0.468,0.975,0.446],[0.718,0.826,0.359]]:
line_len=fp.write('%s\n'%(','join([str(col) for col in row])))
#74. 从 csv_data.csv 文件中读出二维列表。
date=list()
with open(r'd:\csv_data.csv','r') as fp:
for line in fp.readline():
date.append([float(item) for item in line.strip(',')])
#75. 向 csv_data.csv 文件追加二维列表 [[1.468,1.975,1.446],[1.718,1.826,1.359]],然后读出所有数据。
with open(r'd:\csv_data.csv','w') as fp:
for row in [[0.468,0.975,0.446],[0.718,0.826,0.359]]:
fp.write('%s\n'%(','.join(str(col) for col in row)))
date=list()
with open(r'd:\csv_data.csv','r') as fp:
for line in fp.readline():
date.append([float(item) for item in line.split(',')])
#76. 交换变量 x 和 y 的值。
x,y=1,2
x,y=y,x
#77. 判断给定的参数 x 是否是整形。
x=3.14
isinstance(x,int)
#78. 判断给定的参数 x 是否为列表或元组。
x=list()
y=tuple()
isinstance(x,(list,tuple))
isinstance(y,(list,tuple))
#79. 判断 ‘https://blog.csdn.net’ 是否以 ‘http://’ 或 ‘https://’ 开头。若是,则返回 ‘http’ 或 ‘https’;否则,返回None。
def get_url_start(url):
if url.startswitch(('http://','https://'))
return url.split(':')[0]
else:
None
#80. 判断 ‘https://blog.csdn.net’ 是否以 ‘.com’ 或 ‘.net’ 结束。若是,则返回 ‘com’ 或 ‘net’;否则,返回None
def get_url_start(url):
if url.endswitch(('.com','.net'))
return url.split('.')[-1]
else:
None
#81. 将列表 [3,‘a’,5.2,4,{},9,[]] 中 大于3的整数或浮点数置为1,其余置为0。
[1 if item>3 and isinstance(item,(int,float)) else 0 for item in [3,‘a’,5.2,4,{},9,[]]]
#82. a,b 是两个数字,返回其中较小者或最大者。
a=a
b=2
max(a,b)
min(a,b)
#83. 找到列表 [8,5,2,4,3,6,5,5,1,4,5] 中出现最频繁的数字以及出现的次数。
s=[8,5,2,4,3,6,5,5,1,4,5]
v_max=max(set(a),key=a.count)
a.count(v_max)
#84. 将二维列表 [[1], [‘a’,‘b’], [2.3, 4.5, 6.7]] 转为 一维列表。
sum([[1], [‘a’,‘b’], [2.3, 4.5, 6.7]])
#85. 将等长的键列表和值列表转为字典。
keys=[1,2,3]
values=['a','b','c']
dict(zip(keys,values))
#86. 使用链状比较操作符重写逻辑表达式 a > 10 and a < 20。
#87. 写一个函数,以0.1秒的间隔不换行打印30次由函数参数传入的字符,实现类似打字机的效果。
def print_slow(ch,n=30,delay=0.1):
for i in range(n):
print(ch,end='',flush=True)
time.sleep(delay)
#89. 返回数字列表中的最大值和最小值。
inport random
a=[random.random() for i in range(5)]
min(a)
max(a)
#90. 计算 5 的 3.5 方和 3 的立方根。
pow(5,3.5)
pow(3,1/3)
#91. 对 3.1415926 四舍五入,保留小数点后5位。
round(3.1415926,5)
#92. 判断两个对象是在内存中是否是同一个。
a=1
b=a
id(a)==id(b)
#93. 返回给定对象的属性和方法。
a=()
for item in dir(a):
print(item)
#94. 计算字符串表达式 ‘(2+3)*5’ 的值。
eval('(2+3)*5')
#95. 实现字符串 ‘x={“name”:“David”, “age”:18}’ 包含的代码功能。
exec('x={"name":"David", "age":18}')
#96. 使用 map 函数求列表 [2,3,4,5] 中每个元素的立方根。
[item for item in map(lanbda x:pow(x,1/3),[2,3,4,5])] #[pow(item,3) for item in [2,3,4,5]]
#97. 使用 sys.stdin.readline() 写一个和 input() 函数功能完全相同的函数。
import sys
def my_input(prompt):
print(prompt,end='')
return sys.stdin.readline().strip()