1. 程式人生 > >關於Python的一些基礎操作

關於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