1. for...else... 中的break运用:
#求101至200之间的质数(只能被1和本身整除)
num = []
for n in range(101, 201):
for i in range(2, n):
if n % i == 0:
break #退出最近一个for循环,且不运行else语句
else:
num.append(n) #满足n%i=0时,则不添加n至列表
print(num)
2. 算数运算符
% 取模 - 返回除法的余数 7 % 3 输出结果 1
** 幂 - 返回x的y次幂 2**3 为2的3次方, 输出结果 8
// 取整除 - 返回商的整数部分(向下取整) 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
3. %操作符和format()的简单运用:
print("my %s is %d." % ("number", 7))
print("my {} is {}.".format("number", 7))
#输出结果均为 my number is 7.
4. 不能直接将字符串转为int格式,需要先将字符串转为浮点格式,再将浮点转为整数:
int(float(3.14)) #输出结果为3
5. 统计字符串的字母、数字和空格个数时,可以运用模块"string"
import string
def cout(input_str):
letter = 0
digit = 0
space = 0
others = 0
for i in input_str:
if i.isalpha(): #判定该字符是否为字母
letter += 1
elif i.isspace(): #判定该字符是否为空格
space += 1
elif i.isdigit(): #判定该字符是否为数字
digit += 1
else:
others += 1
print("letter: {}, digit: {}, space: {}, others: {}".format(letter, digit, space, others))
6. 关于range(n)的输出结果和将range(n)转换成为列表:
print(list(range(5))) #输出一个结果为[0, 1, 2, 3, 4]
#注意for i in range(5)表示遍历5次,从零开始
7. 擅长利用模块functools中函数reduce进行求和:
from functools import reduce
nums = [2, 4, 5, 10]
return reduce(lambda x, y : x + y, nums) #将列表nums中的数字从左到右累计求和
# 相当于 (((2+4)+5)+10)
8. 计算字符串长度时,转义字符为长度1:
len("a\nb\tc") #结果为长度5
len("a\nb\t\t\/c") #结果为长度8
9. 知识补充
内置函数:
ord()函数将返回单个字符的ASCII值(0-255); #ord('d') 返回值为 100
chr()函数将输入的ASCII值(0-255)返回对应的ASXII符号; #chr('100') 返回值为 'd'
sum()函数将可迭代对象求和 如 a = sum(int(i) for i in '123') #输出结果为(1+2+3)=6
map()高阶函数(它接收一个函数f和一个可迭代对象list,并把函数f依次作用于list每个元素后得到一个新的list),如《def f(x):return x*2》a=map(f,'123') #输出一个新的list['11','22','33']
set()函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等. 如set("abbabamn") #输出集合{'a','b','m','n'}; x&y交集,x|y并集,x-y差集
join()格式为'x'.join(y) #x表示分隔符,表示可迭代对象list等;主要将y中的元素依次以x分隔输出,如':'.join(['a','b','c']) #输出为a:b:c
zip()返回一个对象,可以用list()函数转换成列表,如k='abcd' ;j='12345678';a=zip(k,j);print(list(a)) #返回[('a','1'),('b','2'),('c','3'),('d','4')],取最短长度进行压缩,解压缩为list(zip(*a)) # [('a', 'b', 'c', 'd'), ('1', '2', '3', '4')]
dict()返回一个字典,如dict([[1,'a'],[2,'b']]);dict(zip([1,2,3,4],['a','b'])) #输出结果均为{1:'a',2:'b'}; 如dict(a=1,b=2) #输出结果为{'a':1,'b':2}
sort()永久性的从小到大的排序(1-9,a-z),用法为list.sort() #从大到小则加入参数reverse=True,需要临时排序的时候可以调用sorted(list)
reverse()不进行排序,只反转列表里面的元素,用法为list.reverse()
extend() 如:a.extend(b) 表示将列表b中的元素添加到列表a中 a=[1,2,3]; b=[5,6,7];a.extend(b) #输出a为[1,2,3,5,6,7]
sys中的stdout和stdin模块(需要from sys import stdout,stdin):
print('hello')等同于stdout.write('hello' + '\n') #不需要换行时(如99乘法表),可以运用stdout.write()
input() 与 stdin.readline() #用len()计算长度时stdin.readline()会多一位末尾的'\n'
10. 需要同时赋值且互补影响时,可以用下面方法:
a, b = a + b, a #表示同时赋值a = a + b和b = a
11.生成器是一种特殊的迭代器,它的返回值不是通过return而是用yield:
from itertools import islice
def f():
a, b = 0, 1
while True:
yield b #返回给函数f()一个生成器对象,并不是返回一个值
a, b = b, a + b
print(list(islice(f(), 0, 10))) #打印f()生成器对象前10个元素
x = [(i for i in range(4))]
for j in x[0]: #第一个键值表示生成器对象
print(j) #打印生成器对象的每个值
12. 反向显示
list[::-1] #整个区间,反向一个步长,并重新生成一个列表 # 等同于list[-1:-len(list):-1]
list[-1:-4:-2] #-1至-3区间,反向2个步长,并重新生成一个列表
list[::2] #正向2个步长,并重新生成一个列表 # 等同于list[0:len(list)+1:2]
list[:] #重新生成一个列表,及理解为制列表 # 等同于list[0:len(list)+1:1]
# 补充: list(range(-5, -1)) 输出为 [-5, -4 ,-3, -2]
13. 同一行显示多条语句用“;”隔开:
a = 20; print(a) #打印输出为 20