Python基础

小记一

python的镜像源

清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/
注意:新版Ubuntu要求使用https源。

升级:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pygames

例如:pip3 install -i https://pypi.doubanio.com/simple/ 包名
临时使用:#
可以在使用pip的时候加参数 -i https://pypi.tuna.tsinghua.edu.cn/simple
例如:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider,这样就会从清华的镜像去安装pyspider库。

永久修改,一劳永逸:#
Linux下,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)
内容如下:

[global]
index-url = https://pypi.douban.com/simple/
timeout = 6000
[install]
trusted-host = pypi.douban.com

Windows下,直接在 %userprofile%(用户根目录) 目录中创建一个 pip目录,再新建文件 pip.ini。(例如:C:\Users\WQP\pip\pip.ini)内容同上。

输出

字符串为空时,为False

# 保留格式的输出
shi = '''
		静夜思
  		唐·李白
  床前明月光,疑是地上霜。
  举头望明月,低头思故乡。
'''
print(shi)
random.choice(shi) # 从shi中任选一个字符
# 格式化输出
age = 26
name = '蔡徐坤'
money = 999
print("%s,今年%s岁,一首歌赚了%s块钱" %{name,age,money}) # 将类型转为字符串型输出
print("%s,今年%d岁,一首歌赚了%d块钱" %{name,age,money}) # 按照原类型输出字符串

if …else…简写

# 未简写的样式
a = 10
b = 30
if a > b:
	c = a
else:
	c = b
print(''a和b中的最大值是%d'' %c)
# 简写样式
a = 10
b = 30
c = a if a>b else b
print("a和b两个数较大值是%d" %c)

小记二

(均由字符串调用)

  • for(while)...else...其循环内容被执行完,就会执行else的内容,一旦循环被终止(break),遍不会执行else内容

  • id表示地址,以数字的形式展现

  • find从左向右查找,返回索引,若无,返回-1rfind从右向左查找,同find(可字,或字符串)

  • index从左向右查找,与find不同的是,若无返回“错误”,rindex则相反

  • count查找该字符存在的次数

  • startswith匹配前面字符串,返回True/False,endswith匹配后面字符串,同前;

  • is 开头用于判断
    isalpha是否由字母组成;isdight是否由数字组成‘isalnum是否是由数字和字符组成(alpha-numic)isspace是否为空白;

  • replace(old,new,count)默认全部替换,也可以用count来控制替换的次数;split/rsplit/splitlines('分隔符',maxsplit)返回一个列表,maxsplit最大分割次数;partition/rpartition('分隔符')按照分割符分为三个部分 (前,分隔符,后)

  • capitalize将该段字母首字母转为大写title将每个单词的首字母改为大写

  • ljust/rjust/center(数)按照数的长度做出对齐的方式;lstrip/rstrip/strip去除(左右)空格

  • format格式化字符串,效果与%占位格式化一样

    {}表示占位符,字符串后使用format可以使字符串进行格式化
    eg:1. 变量名字符串,其参数要使用关键字,键值对的方式,顺序不要求
    s = “我叫{name},今年{age}岁,小华也{age}岁”.format(name = “小明”,age = “18”)
    2. 数字段字符串,其参数为大于0的数,可重复使用,将format的参数视为元组,tuple[0],其参数顺序不能颠倒
    name = “小明”
    age = 18
    s = “我叫{0},今年{1}岁,小华也{1}岁”.format(name,age)
    3. 省略字段名,位置传递参数,其中参数位置对应,可以少,但不能多
    s = “我叫{},今年{}岁,小华也是{}岁”.format(‘小明’,18)

    li

    while True:
        name = input('输入账户:')
        # 用户名:全部小写,首个字符不能为数字,并且长度要大于等于6;手机号码11位纯数字
        if (name.islower() and not name[0].isnumeric() and len(name) >= 6) or ( name.isdight() and len(name) == 11 ):
            print('正确')
            break
        else:
            print('错误')
    

小记三

(列表相关)

  • extend列表的拼接;pop(index)列表元素 根据索引的删除 \color{#008000} {根据索引的删除} 根据索引的删除,不加参数时,从后向前删除;remove(element)列表元素 根据元素名称的删除 \color{#008000} {根据元素名称的删除} 根据元素名称的删除,当参数为空时,报错,当有重复的名称时,删除第一个,in判断是否在列表内;insert(index,obj)插入元素到索引位置
  • del 列表/字符串删除其对应指针的指向,当删除列表加索引时,仅删除该元素
  • sort排序,参数默认为reverse = False,改为True时,会逆序;当仅仅使用reverse时,就是将列表内容进行反转
  • 列表推导式eg:
    [ i + 2 for i in range(10) if i % 2 == 0 ] 首先执行for,接着执行if,最后进行赋值
    list = ['62' ,'hello' ,'100' ,'world']
    [ word.title() if word.startswith('h') else word.upper() for word in list],首先执行for,在执行if分支,最后赋值
    [(i,j) for i in range(2) for j in range(3)] 先左后右
  • 发现一个问题,当使用remove删除元素时,会出现有重复的元素删除不干净的情况
    原因:当删除列表元素后,下标与所想不一致造成的
    s = ['西瓜', '面包', '酸奶', '豆浆', '酸奶', '酸奶', '方便面']
    # 情况,重复的酸奶未删除
    for i in s:
        if i == '酸奶':
            s.remove(i)
    print(s)  # ['西瓜', '面包', '豆浆', '酸奶', '方便面'](当删除'酸奶'后,被删除'酸奶'的索引下标成为酸奶后面元素,相当于被删除元素后的所有元素整体前移,但for循环下i的索引会按照原来向后延申,被删除元素下标索引所对应的元素为删除元素后面的元素,不会被赋予给i,所以就形成了存在重复元素时,未被删除)
    # 解决情况如下
    n = 0
    while n < len(s):
        if s[n] == '酸奶':
            s.remove(s[n])
        else:
            n += 1
    print(s) # ['西瓜', '面包', '豆浆', '方便面']
    
    # 一位大佬的思想方法,就是在不改变原列表的情况下,逆序列表内容遍历,而remove是正序删除的
    s = ['西瓜', '面包', '酸奶', '豆浆', '酸奶', '酸奶', '酸奶', '酸奶', '方便面']
    for i in s[::-1]:
        if i == '酸奶':
            s.remove(i)
    print(s) # ['西瓜', '面包', '豆浆', '方便面']
    # for i in range(s.count('酸奶'))
    # 	s.remove('酸奶')
    #另一位就是建立一个新表,进行遍历,若不是牛奶,就将其添加到新表中,最后将新表直接赋值给原表
    

小记四

(字典相关)

  • update合并字典;get获取键对应的值,若不存在,返回None;字典[key]若不存在,报错KeyErroritem遍历每一项;fromkeys(键参数,值参数)创建一个含有参数的键,其值默认为None,若赋值为“值参数”(该参数只能有一个),所有键变为该值
    books = []
    flags = True
    while flags:
        book = input('请输入添加书的名称,作者,价格(以空格进行分割)').split(" ")
        for i in books:
            if book[0] == i.get("书名"):
                print(f"[{book[0]}] 已存在,已跳过此选项")
                break
        else:
            books.append({ "书名": book[0], "作者": book[1], "价格": book[2] })
        if len(books) == 3:
            flags = False
    print(books)
    

(集合相关)

  • 集合(set)底层是以字典的方法实现的,其特点便是:无序,无重复,其实现{元素}是字典中仅有值
  • {}表示空字典,而空集合要用set()update合并集合;add集合添加元素;pop随即删除元素;remove删除元素,若不存在,keyerror;discard删除,若不存在,do nothing
  • intersection & 交集;union | 并集;difference - 差集
  • 列表转字典,要求列表中的每一项必须包含两个元素,不论该项是元组,列表还是集合
    li

小记五

  • sorted(参数1,参数2) 参数1需要为一个可迭代的对象,参数2默认为reverse=False

(函数相关)

  • isinstan(变量, 类型)判断该变量是否为该类型,返回值bool
  • 函数参数(n,m,index=‘2’,school=“清华”)其中index表示默认参数,传参时,按照从左至右传参,当想要越过index传参时,要使用关键字传参的方式,eg:s,c,school="北大"
  • 值和地址的关系,可变的地址赋值:int,str,tuple,float,bool;不可变地址赋值:list,dict,set
  • 递归函数条件:a.要有出口;b.每次递归向出口靠近
  • 匿名函数:lambda 参数列表:返回值表达式
    min/max其中第二个参数为func,可对列表或元组参数使用lambda表达式完成
    sorted其第二个参数可以是匿名函数表达式
    filter过滤,其第一个参数可以使用匿名函数,进行筛选
    map做出映射,第一个参数为func,可使用匿名函数
    from functools import reduce
    
    list1 = [('tom', 19), ('tony', 20), ('lily', 18), ('daniel', 21), ('rose', 22)]
    max(list1, key = lambda x: x[1])  # ('rose', 22)
    min(list1, key = lambda x: x[1])  # ('lily', 18)
    sorted(list1, key = lambda x: x[1],
               reverse = True)  # [('rose', 22), ('daniel', 21), ('tony', 20), ('tom', 19), ('lily', 18)]
    rr = filter(lambda x: x[1] > 20, list1)
    list(rr)  # [('daniel', 21), ('rose', 22)]
    ma = map(lambda x: x[1] + 1, list1)
    list(ma)  # [20, 21, 19, 22, 23]
    maa = map(lambda x: x[0].title(), list1)
    list(maa)  # ['Tom', 'Tony', 'Lily', 'Daniel', 'Rose']
    map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]) # [3, 7, 11, 15, 19]
    r = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])  # 15,x = 1,y = 2,向后就是将x = x+y,y = 后面的数
    
  • 装饰器@+装饰函数采用闭包,内嵌函数,内部函数使用外部函数的参数,返回内部函数
    例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值