自定義序列類

2021-09-23 13:16:52 字數 3455 閱讀 1431

序列的+、+=和extend的區別

實現可切片的物件

列表推導試、生成器表示式、字典推導式

list、tuble、deque

str、bytes、bytearray(陣列,只能放置同一種資料型別)、array.array

list、deque、bytearray、array

str、tuble、bytes

# +

a = [1, 3, 4]

c = a + [4, 5, 6]

print(c)

# 輸出結果 [1, 3, 4, 4, 5, 6]

# +=

a +=[5, 6, 7]

# a +=(5, 6, 7) 加的引數可以是任意序列型別

# += 實際上呼叫的是extend(value) 該函式的引數是乙個可迭代的物件 該函式沒有返回值

print(a)

# 輸出結果 [1, 3, 4, 5, 6, 7]

#模式 [start:end:step]

""" 其中,第乙個數字start表示切片開始位置,預設為0

第二個數字end表示切片截止(但不包括)位置(預設為列表長度)

第三個數字step表示切片的步長(預設為1)

當start為0時可以省略,當end為列表長度時可以省略

當step為1時可以省略,並且省略步長時可以同時省略最後乙個冒號

另外,當step為負整數時,表示反向切片,這是start應該比end的值要大才行

"""alist = [3, 4, 5, 6, 6, 7]

print(alist[::]) # 返回包含原列表中所有元素的新列表

# 輸出結果 [3, 4, 5, 6, 6, 7]

print(alist[1:3]) # 擷取從位置1開始到位置3之間的元素。(包括1,但是不包括3)

# 輸出結果 [4, 5]

print(alist[::-1]) # 返回包含原列表中所有元素的逆序列表

# 輸出結果 [7, 6, 6, 5, 4, 3]

print(alist[::2]) # 隔乙個取乙個,獲取偶數字置的元素

# 輸出結果 [3, 5, 6]

print(alist[1::2]) # 隔乙個取乙個,獲取奇數字置的元素

# 輸出結果 [4, 6, 7]

print(alist[:100]) # 切片結束位置大於列表的長度時,從列表尾部截斷

# 輸出結果 [3, 4, 5, 6, 6, 7]

print(alist[100:]) # 切片開始位置大於列表長度時,返回空列表

# 輸出結果

print(alist[:2:-1]) # 從尾部-1位置開始到2位置

# 輸出結果 [7, 6, 6]

alist[len(alist):] = [9] # 在列表的尾部新增元素

alist[:0] = [1, 3] # 在列表的頭部插入元素

alist[3:3] = [1] # 在3的位置插入元素

alist[:3] = [1, 3] # 替換0-2位置的元素,等號兩邊的列表長度相等

alist[3:] = [1, 3] # 替換從3位置開始的元素,等號兩邊的列表長度可以不相等

alist[::2] = [1, 3] # 隔乙個修改乙個元素,左側切片不連續,等號兩邊列表長度必須相等

alist[:3] = # 刪除列表前三個元素

定義乙個可序列化的類,並實現切片後返回的仍是乙個類

import numbers

class group:

#支援切片操作

def __init__(self, group_name, company_name, staffs):

self.group_name = group_name

self.company_name = company_name

self.staffs = staffs

def __reversed__(self):

self.staffs.reverse()

def __getitem__(self, item):

cls = type(self)

if isinstance(item, slice):

return cls(group_name=self.group_name, company_name=self.company_name, staffs=self.staffs[item])

elif isinstance(item, numbers.integral):

return cls(group_name=self.group_name, company_name=self.company_name, staffs=[self.staffs[item]])

def __len__(self):

return len(self.staffs)

def __iter__(self):

return iter(self.staffs)

def __contains__(self, item):

if item in self.staffs:

return true

else:

return false

staffs = ["bobby1", "imooc", "bobby2", "bobby3"]

group = group(company_name="imooc", group_name="user", staffs=staffs)

sun_group = group[::2]

print(sun_group.staffs)

reversed(group)

for user in group:

print(user)

#列表推導式

# 提取出1-20之間的奇數

odd_list = [i for i in range(21) if i%2 == 1]

print(odd_list)

# 邏輯複雜的情況

def hadle_item(item):

return item * item

odd_list = [hadle_item(i) for i in range(21) if i%2 == 1]

print(odd_list)

#生成器表示式

odd_list = (i for i in range(21) if i%2 == 1)

print(type(odd_list)) #型別是並不是set

for odd in odd_list:

print(odd)

#字典推導式

#將key value交替

my_dist =

reversed_dist =

print(reversed_dist)

python 自定義序列

def checkindex key if key 0 raise indexerror if not isinstance key,int long raise typeerror class numberqueue def init self,start 0,step 1 self.start ...

mysql 自定義序列

原文 mysql主鍵不用自增數字的時候,可以參考如下方式,我抄來的。建立公共的序列表 drop table ifexists t common sequence create table t common sequence seq name varchar 100 not null comment ...

自定義異常類

自定義並捕獲 一 第一種定義方式,繼承exception類 public class myfirstexception extends exception public myfirstexception string msg public myfirstexception string msg,th...