Python 笔记 Grammar Stage 1 Container && Function && FileOperation

#Container#

# --------------------------------------------------list--------------------------------------------------

mylist = [1, 1, 1, 1, 4, 5, "第五人格", "start"]

# index : list.index(element)
inquire = mylist.index(1)
print(f"1在列表中的index为:{inquire}")

# insert : list.insert(index, element) 在指定下标插入元素
mylist.insert(6, 'out')
print(f"在下标第六位insert的元素为:{mylist[6]}")

# append : list.append(element) 在列表尾部插入元素
mylist.append('man')
print(f"在列表尾部append的元素为:{mylist[-1]}")

# extend : list.extend(otherList) 在列表尾部依次追加元素
Kobe = ["what", "can", "i", "say"]
mylist.extend(Kobe)
print(f"extend过后的列表内容为:{mylist}")

# del(关键字) : del list[index] 删除
del mylist[8]
print(f"del过后的列表内容为:{mylist}")

# pop : list.pop(index) 删除
element = mylist.pop(0)
print(f"pop过后的列表内容为:{mylist},取出的元素是:{element}")

# remove : list.remove(元素) 若有重复则删除第一个
mylist.remove(1)
print(f"remove过后的列表内容为:{mylist}")

# clear : list.clear() 清空
mylist2 = [1, 2, 3]
mylist2.clear()
print(f"clear后的列表内容为:{mylist2}")

# count : list.count(element) 计算元素数量
num = mylist.count(1)
print(f"count后得出的结果为:{num}")

# len(函数) : len(list) 计算列表总共元素数量
length = len(mylist)
print(f"计算得列表长度为:{length}")

# sort(函数) : list.sort(key=选择排序依据的函数, reverse=T/F)
# 依据函数就是用来决定key中的元素是按照什么规则排序的, T表降序/F表升序
mylist = [["a", 33], ["b", 55], ["c", 22]]
mylist.sort(key=lambda element: element[1], reverse=True)
print(mylist)
# --------------------------------------------------tuple--------------------------------------------------

# list可修改 而tuple不可修改 可认为只读的list

# def : name = tuple(element, element, element, ... )
t1 = ("mamba", "out", 24, True)

t2 = ()
t3 = tuple()  # 定义空元组

# index() count() len() 的用法和list一样

# --------------------------------------------------str--------------------------------------------------

# 下标索引
my_str = "Man wan wan what can i say"
print(f"{my_str[4]}")

# index() count() len() 用法相同

# replace : str.replace(element1, element2) 功能:将str中的element1替换成element2
# 且这个操作是产生一个新的字符串而不是修改原来的字符串,也就是说有返回值
new_str = my_str.replace("w", "m")
print(f"replace后产生的字符串为{new_str}")

# split : str.split(分隔符字符串) 返回的是list
split_str = my_str.split(" ")
print(f"split后产生的列表为{split_str}")

# strip : str.strip(element) 可用于去前后空格和前后字符串
my_str = " mamba out "
new_str = my_str.strip()  # 去空格
print(f"strip后产生的字符串为{new_str}")

my_str = "24 kobe 24 42"
new_str = my_str.strip("24")  # 去前后数字,实际传入的是"2"和"4"
print(f"strip后产生的字符串为{new_str}")

# 以上为序列:list tuple str
# character : list 可修改, tuple str 不可修改; 三者都是可重复且有序

# 切片: sequence[startIndex:endIndex:step]
# 含头不含尾;step表示间隔(步长),可取-1

# --------------------------------------------------set--------------------------------------------------
# character: 不重复, 乱序, 不支持下标索引, 可修改
# def : name = {element, element, element, ... }, name = set()
my_set = {3, 2, 1, "时代", "少年团", "我们喜欢你", "我们喜欢", "马嘉祺", "马嘉祺", "马家骑"}
print(f"展示set的两个特点:{my_set}")

# add : set.add(element)
my_set.add("丁真珍珠")
my_set.add("策马")
print(f"add后的set内容为:{my_set}")

# remove : set.remove(element)
my_set.remove("少年团")
my_set.remove("马嘉祺")
print(f"remove后的set内容为:{my_set}")  # 与 上面的 add和 remove很像

# pop : set.pop(element) 随机取出一个元素, 同时把他删掉

be_pop = my_set.pop()
print(f"pop后的set内容为:{my_set}, pop的元素为{be_pop}")

# --------------------------------------------------dict--------------------------------------------------
# character : 不重复, 不支持下标索引
# def : name = {key : value, key : value, ... }
my_dict = {"xyx": "芝士雪豹", "wsy": "彩笔killer", "wsy": "留一手", "why": "芙蓉王源", "ly": "理塘丁真", "lxs": "YUKI"}

my_dick = {}
my_derk = dict()  # 定义空字典
print(f"my_dicy的内容为:{my_dict}")

# 基于key获取value
print(f"key取xyx时,value为:{my_dict["xyx"]}")

# 嵌套
my_dict = {
    "xyx": {
        "ID": "芝士雪豹",
        "Rank": "Diamond"
    }, "wsy": {
        "ID": "留一手",
        "Rank": "Platinum"
    }, "why": {
        "ID": "芙蓉王源",
        "Rank": "Platinum"
    }, "ly": {
        "ID": "理塘丁真",
        "Rank": "Platinum"
    }, "lxs": {
        "ID": "YUKI",
        "Rank": "Gold"
    }
}

print(f"检查嵌套结果,xyx-Rank:{my_dict["xyx"]["Rank"]}")

# 增加,修改
my_dict = {"xyx": "芝士雪豹", "wsy": "彩笔killer", "why": "芙蓉王源", "ly": "理塘丁真", "lxs": "YUKI"}
my_dict["ljc"] = "hisoka"
my_dict["wsy"] = "留一手"

# pop : dict.pop(key) 取出并删除
delete = my_dict.pop("ljc")
print(f"删除的元素为:{delete}")

# clear : dict.clear() 清空

# keys : dict.keys() 获取全部key
keys = my_dict.keys()
print(f"key为:{keys},keys的类型为:{type(keys)}")

# 遍历字典
# 方式一 通过提前获取的key来遍历
for i in keys:
    print(f"{my_dict[i]}")

# 方式二 直接遍历字典,每次遍历得到的是key
for i in my_dict:
    print(f"{my_dict[i]}")

# len : len(dict) 统计元素数量(函数)
num = len(my_dict)
print(f"my_dict的元素数量为:{num}")

# --------------------------------------------------Container--------------------------------------------------
# list 可修改
# tuple 不可修改
# str 不可修改
# set 不重复 乱序 不支持下标索引 可修改
# dict 不重复 不支持下标索引 可修改
# 数据容器通用操作

# for 循环遍历

# len(name), max(name), min(name) (函数)
my_list = [1, 2, 3, 4, 5]
my_tuple = (1, 2, 3, 4, 5)
my_str = "abcdefg"
my_set = {1, 2, 3, 4, 5}
my_dict = {"key1": 1, "key2": 2, "key3": 3, "key4": 2, "key5": 1}

print(f"list 中最大的元素是:{max(my_list)}")
print(f"tuple 中最大的元素是:{max(my_tuple)}")
print(f"str 中最大的元素是:{max(my_str)}")
print(f"set 中最大的元素是:{max(my_set)}")
print(f"dict 中最大的元素是:{max(my_dict)}")  # 以key来判断大小

# list,tuple,str,set 可互相转换: 转换类型(name)
# dict 可转换成其他类型,转换成str会保留value,但其他的会丢失value

# sorted : sorted(container, [reverse=True])
# reverse 默认False->从小到大排序;若想反转则赋值True->从大到小排序
my_list = [3, 1, 4, 2, 5]
small = sorted(my_list)
print(f"从小到大排序:{small}")
big = sorted(my_list, reverse=True)
print(f"从大到小排序:{big}")

#Function#

def test_return():
    return '第', 5, True


x, y, z = test_return()
print(f"x={x},y={y},z={z}")

# 传参


def user_info(name, age, sex):
    print(f"name:{name},age:{age},sex:{sex}")


# 位置传参
user_info("丁真", 23, "man")

# 关键字传参,可以不按顺序
user_info(age=23, sex="man", name="丁真")

# 混合,位置在前且得匹配顺序,关键字在后
user_info("丁真", sex="man", age=23)

# 缺省参数,若设置默认值必须在最后


def user_info(name, age, sex="沃尔玛购物袋"):
    print(f"name:{name},age:{age},sex:{sex}")


user_info("Trump", 23)
user_info("丁真", 23, "男")

# 位置不定长


def user_info(*args):
    print(f"args:{args}")  # 所有参数都会被args收集并合并成一个元组(args是元组类型)


user_info("丁真", 23)

# 关键字不定长


def user_info(**kwargs):
    print(f"kwargs:{kwargs}")  # 所有键值对形式参数都会被kwargs收集并合并成一个字典(kwargs是字典类型),若不是键值对则会报错


user_info(name="丁真", age=18, sex="man")

# lambda 匿名函数
# character : 只可临时使用一次
# lambda 传入参数: 函数体(一行代码)


def test_func(compute):
    result = compute(1, 2)
    print(result)


test_func(lambda a, b: a + b)

# 等价于
# def test_func(compute):
#     result = compute(1, 2)
#     print(result)
#
# def compute(x, y):
#     return x + y

#FileOperation#

# open : open(name, mode, encoding) (函数)
# name : 要打开的目标文件名
# mode : 设置访问模式(r:只读, w:写入(原内容被删除), a:追加)
# 若打开不存在的文件r报错,w和a会创建该文件
# encoding : 编码格式(UTF-8), 实际上encoding的顺序并不是第三位, 所以传入参数的时候要用关键字指定传入

# 打开文件
f = open("D:/pytest.txt", "r", encoding="UTF-8")
print(f"f类型为:{type(f)}")

# 读取文件-read(num)  num:需要读取的字节长度,若不传入则表示读取全部数据
print(f"读取五个字节:{f.read(5)}")
print(f"全部读取:{f.read()}")  # 从上次读取的地方继续读取,不论什么方法都是
print("---------------------------------------------------------------------")

# readLines()  读取全部行,并且返回的是列表,每一行的数据为一个元素
lines = f.readlines()
print(f"lines的type为:{type(lines)}")
print(f"lines:{lines}")

# readline()  一次读取一行
line = f.readline()
print(f"line的type为:{type(line)}")
print(f"line:{line}")

# for 循环读取
for line in f:  # 每次读取一行
    print("line")

# 文件的关闭
f.close()

# with open  运行过后自动关闭
with open("D:/pytest.txt", "r", encoding="UTF-8") as f:
    for line in f:
        print(f"每一行:{line}")

# ----------------------------------------文件的写入----------------------------------------
# 1. f=open("path", "operation", encoding=" ") 打开文件
f = open("D:/pytest.txt", "w", encoding="UTF-8")

# 2. f.write("content") 文件写入
f.write("oh yeah")

# 3. f.flush() 内容刷新
# 直接调用write,内容并未真正写入文件,而是积攒在程序的内存中,称之为缓冲区
# # 调用flush的时候内容才会真正写入文件,这样可以避免频繁的操作硬盘,导致效率下降
f.flush()

# 4. close()
f.close()  # 其实close内置了flush功能

# ----------------------------------------文件的追加写入----------------------------------------
# 1. f=open("path", "operation", encoding=" ") 打开文件
f = open("D:/pytest.txt", "a", encoding="UTF-8")

# 2. f.write("content") 文件写入
f.write("oh yeah")

# 3. f.flush() 内容刷新
f.flush()

# 4. close()
f.close()  # 其实close内置了flush功能
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值