关于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)
View Code

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)     # 自己独立开辟出一块空间
View Code

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()
View Code

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位数据之前逗号分隔,钱
View Code

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
View Code

 

 

 

 

 

 

posted @ 2018-10-19 14:05  知你几分  阅读(155)  评论(0编辑  收藏  举报