python基础


"""
1、容易混淆的表现形式
元祖() 1、元祖不可修改
列表[]

集合{} 唯一 1、与字典类似,但无values
2、里面元素均不可变,故不可有列表
字典{} 1、key不可变类型 2、查找速度快,但占用内存

2、可变序列与不可变序列
区别:能否对序列增删改 增删改后对象地址不变
能改:可变序列 不可改:不可变序列
可变序列:列表、字典、集合
不可变序列:数字、字符串、元祖
"""

# 列表
list1=[]
list2=['zhangsan',2,'李四','zhangsan']
list3=list()
# 1、计数 count
print(list2.count('zhangsan')) # 2
# 2、索引 从0开始
print(list2[0]) # zhangsan
# 3、末尾插入数据 list.append(数据)
list2.append('加数据')
print(list2) # ['zhangsan', 2, '李四', 'zhangsan', '加数据']
# 4、增加新序列 list.extend(列表)
list2.extend(['武汉','长沙'])
print(list2) # ['zhangsan', 2, '李四', 'zhangsan', '加数据', '武汉', '长沙']
# 5、清空 list.clear()
list2.clear()
print(list2) # []
# 6、插入 list.insert(索引,值)
list2.insert(0,{"key":"value"})
print(list2) # [{'key': 'value'}]
# 7、删除元素 list.remove(值) 若相同元素有多个,只删除第1个
list4=['武汉','长沙','beijing',5,'天津',5,'上号','天津']
list4.remove('天津')
print(list4) # ['武汉', '长沙', 'beijing', 5, 5, '上号', '天津']
# 8、删除索引 list.pop(索引) 通过索引删除数据
list4.pop(0)
print(list4) # ['长沙', 'beijing', 5, 5, '上号', '天津']
# 9、反转列表 list.reverse()
list4.reverse()
print(list4) # ['天津', '上号', 5, 5, 'beijing', '长沙']
# 10、升序 sort(reverse=False)
list5=[8,4,12,45,2]
list5.sort(reverse=False)
print(list5) # [2, 4, 8, 12, 45]
# 11、降序 sort(reverse=True)
list5.sort(reverse=True)
print(list5)
# 12、临时排序 sorted(list)
b = sorted(list5)
print(b) # [2, 4, 8, 12, 45]

# 嵌套
list6=[['张三',4,'李四','string'],{"key1":1,"key2":2,"key3":3},(11,22,33)]
print(list6[0][1]) # 4
print(list6[1]["key2"]) # 2

# 元祖 不可修改指指向不变,元素可变
tuple = ('a','b',['A',1,'张三'],(2,3,4),)
tuple[2][0]='x' # 0开始索引
print(tuple) # ('a', 'b', ['x', 1, '张三'], (2, 3, 4))
print(tuple[0]) # a 查询
print(tuple.count(0)) # 0 在元祖中出现的次数
# 交换两个变量的值
num1 = 3
num2 = 4
num2,num1 = num1,num2
print(num1) # 4
print(num2) # 3
# 解包
tuple1 = 10,20,30,40
a,b,*c = tuple1
print(a,b,c) # 10 20 [30, 40]

# 字典 键为任意对象,不能重复,若重复,后面替补前面
d = dict(name='zhangsan',age=13,gender='男')
print(d) # {'name': 'zhangsan', 'age': 13, 'gender': '男'}
# 新增、修改键值
d["key1"]="value1"
print(d) # {'name': 'zhangsan', 'age': 13, 'gender': '男', 'key1': 'value1'}
# 删除键
d.pop("name")
print(d) # {'age': 13, 'gender': '男', 'key1': 'value1'}
# 查询
print(d.get("key1")) # value1
# 遍历所有键名
for key in d.keys():
print(key) # value1 age gender key1
# 遍历所有键对应的值
for value in d.values():
print(value) # 13 男 value1
# 遍历所有键和值
for key,value in d.items():
print(f"key={key} value={value}") # key=age value=13 key=gender value=男 key=key1 value=value1
# 向字典中添加key-value setdefault()
result= d.setdefault('name1','王五')
print(result) # 王五
print(d) # {'age': 13, 'gender': '男', 'key1': 'value1', 'name1': '王五'}
# 将其他字典添加到当前字典中 update()
d1 = {"key2":"value2","key3":"value3"}
d.update(d1)
print(d) # {'age': 13, 'gender': '男', 'key1': 'value1', 'name1': '王五', 'key2': 'value2', 'key3': 'value3'}
# 删除键值 del
del d["age"]
print(d) # {'gender': '男', 'key1': 'value1', 'name1': '王五', 'key2': 'value2', 'key3': 'value3'}
# 随机删除1个键值对 popitem
result2 = d.popitem()
print(result2) # ('key3', 'value3')
print(d) # {'gender': '男', 'key1': 'value1', 'name1': '王五', 'key2': 'value2'}
# 复制 copy 复制后与原字典独立
d3 = d.copy()
print(d3) # {'gender': '男', 'key1': 'value1', 'name1': '王五', 'key2': 'value2'}
d3['gender']='女'
print(d3) # {'gender': '女', 'key1': 'value1', 'name1': '王五', 'key2': 'value2'}
# 清除
d3.clear()
print(d3)
# in
# not in

# 集合
a = set()
a = {1,2,3}
# 字典转化为集合
s = set({'a':1,'b':2,'c':3})
print(s) # {'a', 'b', 'c'}
# 字符串转化为集合
s1 = set('hello')
print(s1) # {'h', 'e', 'l', 'o'}
# 元祖转化为集合
tuple5 = (1,2,3,4)
s2 = set(tuple5)
print(s2) # {1, 2, 3, 4}
# 列表转化为集合
s3 = set([1,2,2,3,3,5,6,7,7])
print(s3) # {1, 2, 3, 5, 6, 7}
# in
# not in
# 添加 add
s3.add('武汉')
print(s3) # {1, 2, 3, 5, 6, 7, '武汉'}
# 合并集合 可传递字典,字典只会使用键
s3.update(s2)
print(s3) # {1, 2, 3, 4, 5, 6, 7, '武汉'}
# 合并字典
d1 = {"key2":"value2","key3":"value3"}
s3.update(d1)
print(s3) # {1, 2, 3, 4, 5, 6, 7, 'key3', 'key2', '武汉'}
# 随机删除并返回集合中元素
result = s3.pop()
print(result) # 1
print(s3) # {2, 3, 4, 5, 6, 7, 'key2', 'key3', '武汉'}
# 删除
s3.remove('武汉')
print(s3) # {2, 3, 4, 5, 6, 7, 'key2', 'key3'}
# 清空 clear()
# 复制 copy()
# 交集 &
a = {1,2,3,4,5}
b = {1,2,3,7,8}
result = a & b
print(result) # {1, 2, 3}
# 并集
result = a | b
print(result) # {1, 2, 3, 4, 5, 7, 8}
# 差集
result = a - b
print(result) # {4, 5}
# 异或 只在1个集合中出现的元素
result = a ^ b
print(result) # {4, 5, 7, 8}
# a是否是b的子集
result = a <= b
print(result) # False

# 切片 列表、元祖、字符串均可切片 集合、字典不可切片
name = "abcdefg"
print(name[2:5:1]) # cde
print(name[2:5]) # cde
print(name[:5]) # abcde
print(name[1:]) # bcdefg
print(name[:]) # abcdefg
print(name[::2]) # aceg
print(name[:-1]) # abcdef, 负1表示倒数第一个数据print(name[-4:-1]) # def
print(name[::-1]) # gfedcba

# 长度
str_data = "hello python"
print(len(str_data)) # 12: 字符中字符个数(包含空格)
list_data = ["python", "java"]
print(len(list_data)) # 2: 列表中元素个数
tuple_data = ("admin", 123456, 8888)
print(len(tuple_data)) # 3: 元组中元素个数
dict_data = {"name": "tom", "age": 18, "gender": "男"}
print(len(dict_data)) # 3: 字典中键值对的个数

# 加减乘除 字符串和列表和元祖可以+ * 字典和集合不行
# count() 对 字典和集合不适用
# index() 对 字典和集合不适用

# 函数
"""
def 函数名():
函数封装的代码
"""
# 缺省函数
def print_info(name, title="", gender="男生"):
print(f"{title}{name} 是 {gender}")
# 提示:在指定缺省参数的默认值时,应该使用最常见的值作为默认值!
print_info("小明") #小明 是 男生
print_info("老王", title="班长") #班长老王 是 男生
print_info("小美", gender="女生") #小美 是 女生

# 多值函数
def demo(num, *args):
print(num)
print(args)
demo(1, 2, 3, 4, 5) # 1换行 (2, 3, 4, 5)

def sum_numbers(*args):
num = 0
# 遍历 args 元组求和
for n in args:
num += n
return num
nums = (1, 2, 3)
result = sum_numbers(*nums)
print(f"result={result}") #result=6

# 匿名函数
user_list = [
{'name': '张三', 'age': 22, 'title': '测试工程师'},
{'name': '李四', 'age': 24, 'title': '开发工程师'},
{'name': '王五', 'age': 21, 'title': '测试工程师'}
]
# 按照age进行排序
user_list.sort(key=lambda m: m["age"])
print(user_list) # [{'name': '王五', 'age': 21, 'title': '测试工程师'}, {'name': '张三', 'age': 22, 'title': '测试工程师'}, {'name': '李四', 'age': 24, 'title': '开发工程师'}]

# 模块 1个py文件
# 包 包含多个模块的特殊目录

# 列表生成式
a = [x*x for x in range(0,10)] # 相乘 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(a)
# 字典形式
{x * x for x in range(0, 10)}
posted @ 2023-02-22 18:21  葳馨  阅读(16)  评论(0)    收藏  举报