python初学者知识补充与加深

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值