关于Python的一些基础操作
1.列表去重并且保持原来的顺序
""" 有一个列表[11, 2, 3, 3, 7, 9, 11, 2, 3],去重并且保持原来的顺序. """ numbers = [11, 2, 3, 3, 7, 9, 11, 2, 3] ret = list(set(numbers)) print(ret) ret.sort(key=numbers.index) # 按值在l1中的索引进行排序 print(ret)
2.深浅拷贝和字典赋值
""" 问:执行完下面的代码后, l,m的内容分别是什么? """ from copy import deepcopy def func(m): for k, v in m.items(): m[k+2] = v+2 # 不成立的,字典的key不能被改变 m = {1: 2, 3: 4} l = m # 浅拷贝 l2 = deepcopy(m) # 深拷贝 l[9] = 10 l2[90] = 100 # func(l) print(l) # l和m共享一块内存空间,所以值会一起改变 print(m) print(l2) # 自己独立开辟出一块空间
3.模拟链式操作
""" Python模拟链式操作示例 """ class Foo(object): def __init__(self, name, age): self.name = name self.age = age def wang(self): print("自信是件好事") return self def run(self): print("谦虚也是本分") return self f = Foo("小二哥", 18) # 生成一个实例,调用了__init__ f.wang().run() # 连接调用 f1 = f.wang() # 单独调用 f1.run()
4.%和format的区别
""" %和format的区别 """ c = (180, 180) command1 = "来人啊,把他给我伦了:敌人坐标:%s" % (c,) # 不加逗号报错 command2 = "来人啊,把他给我伦了:敌人坐标:{}".format(c) class Person(object): def __init__(self, name, age): self.name = name self.age = age def __str__(self): return "{self.name} is {self.age} years old.".format(self=self) p = Person("小二哥", 18) print(p) # 下标 data = [11, 22] print("{0} --- {0}".format(data)) # 添加相同数据 print("{0[0]} --- {0[0]}".format(data)) # 等同于列表操作 print("{0[0]} --- {0[1]}".format(data)) print("{:>10}".format(18)) # 10个字符,不够空格填充 print("{:0>10}".format(18)) # 10个字符,不够0来填充 print("18".zfill(10)) print("{:A>10}".format(18)) # 10个字符,不够A填充 print("{:.4f}".format(3.1415926)) # 保留4位小数 print("{:,}".format(1234567890)) # 3位数据之前逗号分隔,钱
5.函数里面可变对象不能做关键字参数
""" 可变对象不能做关键字参数 函数定义时生成一个空列表定义,值都会指向这个空列表 """ import random numbers = [11, 22, 33, 44, 55] print(numbers[8:]) # 列表切片超过列表本身range范围返回[]空列表 random.shuffle(numbers) print(numbers) # 打乱列表的顺序 def func(arg, li=[]): li.append(arg) return li list1 = func(21) print(list1) list2 = func(21, [1,]) print(list2) # 返回了一个新列表[1, 21] list3 = func(28) print(list3) # [21, 28]可是只传递了一个参数 def foo(arg, ni=[]): return ni.append(arg) # 还没有完成追加,返回空值 l1 = foo(21) print(l1) # None l2 = foo(21, [1,]) print(l2) # None l3 = foo(28) print(l3) # None