python随笔记录

1、python的推导式

推导式结构: 表达式 for 迭代变量 in 可迭代对象 [if 条件表达式]

a = [ i * 2 for i in range(10) ]
print(a)

2、python文件基本操作
# 文件读取,写入

f = open("a.txt", mode='w', encoding="UTF-8")
f.write('今天天气不错', )
f.close()
# 文件内容读出
f = open('a.txt', mode='r', encoding="UTF-8")
content = f.read()
print(content)
f.close()

# 目的是为了保存程序运行过程中,产生的数据。方便以后直接使用这些已经保存的数据
# 流程:
# 打开,
# 读写
# 关闭
3、python中列表作为形参(易错)

python中,如果一个函数的形参有默认值,我们称之为缺省参数,当这个缺省参数的值是一个列表,则每次调用这个函数,这个列表都是累计变化的,并不会每次调用重新生成一个新列表。

def add_num(num, temp=[]): 
    temp.append(num)
    print(temp)


add_num(11)
add_num(22)
add_num(33)

按正常思考,每次调用这个方法的时候,打印出列表值都是新的值,第一次是 11, 第二次重新开始是22
实际第一次是[11],第二次是[11, 22],并不是一个重新开始的列表

4、python中对列表中的字典进行排序
people_list = [
    {"name": "张三", "age": 25, "city": "北京"},
    {"name": "李四", "age": 30, "city": "上海"},
    {"name": "王五", "age": 35, "city": "深圳"},
    {"name": "赵六", "age": 40, "city": "广州"}
]


def get_value(temp):
    return temp["age"]


people_list.sort(key=get_value)  # 给key指定一个函数名,以后key会自动调用这个函数,然后把people_list这个列表中的字典往里面传
print(people_list)

也可以使用匿名函数

people_list = [         
    {"name": "张三", "age": 25, "city": "北京"},         
    {"name": "李四", "age": 30, "city": "上海"},         
    {"name": "王五", "age": 35, "city": "深圳"},         
    {"name": "赵六", "age": 40, "city": "广州"}         
]


# 匿名函数的使用方法是    lambda  形参:返回值         
people_list.sort(key=lambda x: x["age"])   #这一行是形参是x,返回的值是x这个字典的["age"],所以会在 people_list这个列表里找到所有字典,然后在这个字典的找age.根据这个排序如果是字典里套字典会怎么办呢 ??    

print(people_list)         

5、os.walk()使用
# os模块中walk的功能
# walk 能够遍历出文件夹中的所有文件,文件夹
import os

# os.walk()返回指向路径下的所有文件夹和文件,形式是dirpath(文件路径), dirnames(目录名), filenames(文件名)。使用的是深度遍历的方式
for temp in os.walk("./"):
    print('_' * 30)
    print(temp)

6、python使用递归方式遍历文件夹

listdir怎么用的

import os         


# os.listdir(path_name)列举出这个路径下的文件和文件夹         
def list_file_or_floder(path_name):         
    temp = os.listdir(path_name)         
    print(temp)         


list_file_or_floder("./aa")         

怎么遍历文件夹

# 遍历文件夹
import os


# os.listdir(path_name)列举出这个路径下的文件和文件夹,但是只是一层的路径
def list_file_or_floder(path_name):
    # 列举出这个路径下的文件和文件夹,不包含这个路径本身的名字
    file_floder_names = os.listdir(path_name)
    print(file_floder_names)
    # 循环路径下的文件和文件夹
    for name in file_floder_names:
        temp_path_name = path_name + '/' + name
        # 判断这个文件是不是一个文件夹,
        if os.path.isdir(temp_path_name):
            print("%s是文件夹 " % name)
            list_file_or_floder(temp_path_name)  # 判断出name是文件夹名字的时候,使用函数递归操作,传入这个name的目录。而temp_path_name就是包含这个name
        else:
            print("%s是文件 " % name)


list_file_or_floder("./")
7、python的三元运算符(三目运算符)
  • 三元运算符的语法格式: 条件成立返回的数据 if 条件 else 条件不成立返回的数据
    一般会用一个变量保存这个返回的值
    result = True if 10>0 else False
8、python的负索引和切片
# 负索引-字符串
info = 'abcdef'
print(info[-1])  # f
# 切片-字符串
print(info[1:-1])  # bcde 切片的时候, 后面是闭区间,所以取不到-1位置的。 
print(info[-3:-1])  # de
print(info[-1:-3:-1])  # fe
print(info[-1::-1])  # fedcba

# 负索引-列表
nums = [11, 22, 33, 55]
print(nums[-1])  # 55
# 切片-列表
print(nums[1:-1])  # [22, 33]
print(nums[-3:-1])  # [22, 33]
print(nums[-1:-3:-1])  # [55, 33]
9、join 和 split结合
str = "life is short"

words = str.split(" ")  # 以空格为分隔符,切割字符
print(words)

word2 = words[::-1]

str = "  ".join(word2)  # 把列表连接起来
print(str)

word3 = ("aa", "bb", "cc")  # 把元组连接起来
str2 = "_".join(word3)
print(str2)
10、python的打乱列表的顺序
import random


nums=[11,22,33,44,55,66]
random.shuffle(nums)
print(nums)
11、python格式化字符串format

# 格式方式1
print(' %s %d %.2f' % ('11111', 1234, 3.1415)) 
# 结果是11111 1234 3.14
"""
字符串.format()形式, format后面是要收集好,传入的字符串内容,并且每次内容有个标记。默认就是位置标记,第一个是{0},之后是{1}

。format前面是要确认清楚,挑选后面哪个字符。

"""
# 1、通过位置    字符串.format()
print("-------通过位置------")

print("{0},{1}".format("aa", "bb"))  # aa,bb   formate后面的内容按0,1,2这样排序, 可以选择对应序号的,填写到前面
print("{2},{1}".format("aa", "bb", "cc"))  # cc,bb
print("{0}-{1}".format("aa", "bb"))  # aa-bb
print("{},{}".format("aa", "bb"))  # aa,bb
# 2、通过关键字参数
print('--------------通过关键字参数-------------------------')
print("{name},{age}".format(age=18, name='ming'))  # ming,18


class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return "name is {a.name}".format(a=self)


print(Person("zhou", '99'))
# 3、通过映射list
print('---------------------通过list--------------')
a_list = ['zhou', 20, 'china']
print('my name is {0[0]} ,and age is {0[1]}'.format(a_list))
# 4、通过映射dict
print('-----------通过dict---------------------')

b_dict = {'name': 'zhou', 'age': 99, 'province': 'taiwan'}
print("my name is {name}, age is {age},from {province}".format(**b_dict))
print("my name is {info[name]}, age is {info[age]},from {info[province]}".format(info=b_dict))
# print("my name is {info["name"]}, age is {info["age"]},from {info["province"]}".format(info=b_dict))
# 按之前的字典取值, 是要用info["name"]这样写法的。但是这种格式下就是{info[name]}
# 5、填充与对齐
print('------------填充和对齐------------')
print('**************{:>8}************'.format("123"))
print('**************{:<8}************'.format("123"))
print('**************{:0<8}************'.format("123"))
print('**************{:a<8}************'.format("123"))
"""
值是
**************     123************
**************123     ************
**************12300000************
**************123aaaaa************
"""
# 6.精度和类型
print("-------精度与类型----------------")

print('{:.2f}'.format(321.22234))  # 小数点后两位
# 7、用金额的千位分割符

print('{:,}'.format(18))
print('{:b}'.format(16))  # 二进制 10000
print('{:d}'.format(16))  # 十进制 16
print('{:o}'.format(16))  # 八进制 20
print('{:x}'.format(16))  # 十六进制 10

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值