主頁 > 軟體設計 > 14.串列從入門到實踐(進來先看目錄)

14.串列從入門到實踐(進來先看目錄)

2020-12-08 10:31:59 軟體設計

目錄

一、串列的創建

二、串列的訪問

1.索引

2.切片

三、對于串列的有關操作(增、刪、改、查)

1.在串列中添加元素

2.洗掉list中的元素

3.修改串列中的值

4.串列的有關查詢操作

四、串列的排序

1.sorted函式

2.sort方法

五、串列的嵌套

六、串列的高級應用

1.多維串列排序

2.串列推導式

3.構造多維串列

七、練習

八、第十課練習答案


串列是可變的序列(串列中可以存盤多個資料,且可以對其中的資料進行新增、洗掉、修改和查詢),串列是常用來存盤同類專案的集合,

animals = ['bear','tiger','zebra','elephant'] #這是一個串列,可以將它理解為容器

一、串列的創建

1.names_of_students = [] # 創建一個空串列
2.name of department = ['資訊工程學院'] # 包含1個元素
3.names_of_majors = ['軟體技術','物聯網應用技術','計算機網路技術'] # 以逗號分割專案,包含3個元素
4.words = [x for x in 'abc'] # 使用串列推導式將可迭代物件轉為串列
5.numbers = list('123456789') # 使用型別建構式將可迭代物件轉為串列,

二、串列的訪問

要訪問串列中的值有索引和切片兩種方式,(是不是感覺有些熟悉?是的,之前的字串也是如此,)

1.索引

如何獲得animals中的tiger?

串列中根據每個元素所在的下標取值就是索引,類似字串,下標不是從1開始,而是從0開始,如果你想要2,那你的大腦中就應該想到第2位的下標是1,

?

串列中的值與索引[1]
串列中的值與反向索引[1]

在串列中根據索引取值:串列名稱[下標],

>>>print(animals[1])
tiger

>>>for index in range(len(animals)):
...    print(animals[index])
bear
tiger
zebra
elephant

2.切片

串列的切片操作[1]
>>>names_of_majors = ['軟體技術','物聯網應用技術','計算機網路技術']
>>>names_of_majors[1:3]
['物聯網應用技術', '計算機網路技術']

>>>numbers = [1,2,3,4,5,6,7,8,9,0]
>>>print(numbers[2:4]) # 從索引2到4(不包含4)之間的值
[3, 4]
>>>print(numbers[5:]) # 從索引5到結束
[6, 7, 8, 9, 0]
>>>print(numbers[-2:]) # 從右側倒數第二開始到結束
[9, 0]
>>>print(numbers[0:9:3]) # 從索引0到9(不包含9),每隔3個元素取1個值
[1,4,7]

三、對于串列的有關操作(增、刪、改、查)

1.在串列中添加元素

(1)append方法

append將元素追加到最后,每次添加一個元素,格式為s.append(x),x可以是任意數值型別,

>>>animals = ['bear','tiger','zebra','elephant']
>>>animals.append('crocodile')
>>>animals
['bear', 'tiger', 'zebra', 'elephant', 'crocodile']

還有一點需要注意的是,在python的官方檔案中提到s.append('x')等同于s[len(s):len(s)]=['x'],而s[len(s)]=['x']則會出現錯誤提示“list assignment index out of range”,這是因為索引方法只對已有下標有效,而s[len(s):len(s)]=['x']使用的是切片方法,可以突破已有下標的限制,

(2)insert方法

insert將元素插入到指定位置,格式為s.insert(i,x),i為插入位置的下標,x可以是任意數值型別,s.insert(i,x)等同于s[i:i]=x,

插入數值
>>>s=[1,2,3,4,5]
>>>s.insert(0,0)
>>>s
[0, 1, 2, 3, 4, 5]

插入串列
>>>s=[1,2,3,4,5]
>>>s.insert(3,[1,2])
>>>s
[1, 2, 3, [1, 2], 4, 5]

插入字典
>>>s=[1,2,3,4,5]
>>>s.insert(3,{'a':3})
>>>s
[1, 2, 3, {'a': 3}, 4, 5]

插入元組
>>>s=[1,2,3,4,5]
>>>s.insert(3,(0,0,0))
>>>s
[1, 2, 3, (0, 0, 0), 4, 5]

(3)extend方法

作用是實作兩個串列的連接,格式為list1.extend(list2),等效于list1+=list2或者list1[len(list1):len(list1)]=list2,

#
>>>s=[1,2,3,4,5]
>>>t=[4,5,6]
>>>s.extend(t)
>>>s
[1, 2, 3, 4, 5, 4, 5, 6]


>>>s=[1,2,3,4,5]
>>>t=[4,5,6]
>>>s+=t
>>>s
[1, 2, 3, 4, 5, 4, 5, 6]


>>>s=[1,2,3,4,5]
>>>t=[4,5,6]
>>>s[len(s):len(s)]=t
>>>s
[1, 2, 3, 4, 5, 4, 5, 6]

>>>s=[1,2,3,4,5]
>>>t=[4,5,6]
>>>s.extend(t[-2:])
>>>s
[1, 2, 3, 4, 5, 5, 6]

2.洗掉list中的元素

(1)del函式

>>>s=[1, 2, 3, 4, 5, 5, 6]
>>>del s[0] # 洗掉指定索引的值
>>>s
[2, 3, 4, 5, 5, 6]
>>>del s[:2] # 洗掉切片區域內的值
>>>s
[4, 5, 5, 6]
>>>del s[:] # 洗掉全部的值
>>>s
[]

(2)clean方法

洗掉list中的所有元素,等同于del s[:],

>>>words=['a','b','c','d']
>>>words
['a', 'b', 'c', 'd']
>>>words.clear()
>>>words
[]

(3)remove方法

根據值洗掉串列中與其相同的第一個元素,

>>>words=['a','b','c','b','d']
>>>print(words)
['a','b','c','b','d']
>>>words.remove('b')
>>>print(words)
['a','c','b','d']

(4)pop方法

根據索引洗掉串列中的元素,同時回傳洗掉的元素,格式為s.pop(i),i是索引值,預設時默認為-1,即洗掉串列中的最后一個值,

>>>numbers = [1,2,3,4,5,6]
>>>number1 = numbers.pop()
>>>print(number1)
6
>>>print(numbers)
[1, 2, 3, 4, 5]
>>>number2 = numbers.pop(1)
>>>print(number2)
2
>>>print(numbers)
[1, 3, 4, 5]

思考:如何洗掉串列中所有的'b',

3.修改串列中的值

(1)利用索引和切片修改串列中的值

>>>odd_numbers = [1,3,5,'aa',9]
>>>odd_numbers[3] = 7 # 修改單個值
>>>odd_numbers
[1, 3, 5, 7, 9]


>>>odd_numbers[0:3] = [2,2,2] # 修改多個值,切片長度和替換值的數量相等,原有串列長度不變
>>>odd_numbers
[2, 2, 2, 7, 9]

>>>odd_numbers[0:2] = [3,3,3] # 修改多個值,切片長度小于替換值的數量,原有串列長度變大
>>>odd_numbers
[3, 3, 3, 2, 'aa', 9]

>>>odd_numbers[0:3] = [1,2,3,4] # 修改多個值,切片長度小于替換值的數量,原有串列長度再次變大
>>>odd_numbers
[1, 2, 3, 4, 2, 'aa', 9]

>>>odd_numbers[::2] = ['bb','cc','dd','ee'] # 根據步長修改串列中的元素
>>>odd_numbers
['bb', 2, 'cc', 4, 'dd', 'aa', 'ee']

>>>odd_numbers[0:4] = ['aa'] # 修改多個值,切片長度大于替換值的數量,原有串列長度變小
>>>odd_numbers
['aa', 'dd', 'aa', 'ee']

(2)列用for回圈和索引修改串列中的值

將['aa', 'dd', 'aa', 'ee']中的'aa'修改為'cc'

>>>odd_numbers = ['aa', 'dd', 'aa', 'ee']
>>>for i in range(len(odd_numbers)):
...     if odd_numbers[i] == 'aa':
...         odd_numbers[i] = 'cc'
...         
>>>print(odd_numbers)
['cc', 'dd', 'cc', 'ee']

4.串列的有關查詢操作

# 是否包含某個元素?
>>>odd_numbers = ['cc', 'dd', 'cc', 'ee']
>>>if 'cc' in odd_numbers:
...     print(True)
True

# 串列中有幾個'cc'
>>>odd_numbers.count('cc')
2
>>>odd_numbers.count('aa')
0

# 回傳串列中某個元素的索引值
>>>odd_numbers.index('cc')
0

odd_numbers.index('aa')  # 如果串列中不包含這個元素,則出現例外
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: 'aa' is not in list

# 獲取串列的長度
>>>len(odd_numbers)
4

# 查找串列中的最大值
>>>max(odd_numbers)
'ee'

# 查找串列中的最小值
>>>min(odd_numbers)
'cc'

四、串列的排序

1.sorted函式

sorted是python的內建函式,可以對所有可迭代物件進行排序,使用sorted對串列進行排序將得到一個新的串列,而原串列不會改變,sorted函式的語法:sorted(iterable, key=None, reverse=False)

iterable:可迭代物件

key:主要是用來進行比較的元素,只有一個引數,具體的函式的引數就是取自于可迭代物件中,指定可迭代物件中的一個元素來進行排序,(關于key的使用詳見本文第六部分 串列的高級應用)

reverse:排序規則,reverse = True 降序 , reverse = False 升序(默認),

>>>odd_numbers = [7,1,3,9,5]
>>>sorted(odd_numbers) # 簡單排序,默認為升序
[1, 3, 5, 7, 9]
>>>odd_numbers
[7, 1, 3, 9, 5]
>>>sorted(odd_numbers,reverse = True) # 降序
[9, 7, 5, 3, 1]

# 獲得排序后的串列
>>>sorted_odd_numbers = sorted(odd_numbers,reverse = True)
>>>sorted_odd_numbers
[9, 7, 5, 3, 1]

2.sort方法

sort是串列的一種方法,使用它將直接改變原有串列,sort方法的語法:list.sort( key=None, reverse=False),key和reverse的作用與sorted函式相同,

from random import randint
numbers = []
for i in range(10):
    numbers.append(randint(0,101))
print(numbers)
[74, 34, 20, 30, 35, 80, 60, 95, 20, 4]

numbers.sort()
print(numbers)
[4, 20, 20, 30, 34, 35, 60, 74, 80, 95]

numbers.sort(reverse=True)
print(numbers)
[95, 80, 74, 60, 35, 34, 30, 20, 20, 4]

五、串列的嵌套

串列的嵌套即在串列中在嵌套串列,如下所示:

>>>data = [['Tom',21,'20202501'],['Jim',20,'20181717'],['Susan',19,'20201908']]
>>>data
[['Tom', 21, '20202501'], ['Jim', 20, '20181717'], ['Susan', 19, '20201908']]
>>>len(data)
3

data中包含有3個子串列,每個子串列包含有姓名、年齡和學號三個資訊,

獲得Jim的所有資訊

>>>data[1]
['Jim', 20, '20181717']

獲得Jim的年齡

>>>data[1][1]
20

修改Jim的學號

>>>data[1][2] = '20181720'
>>>data
[['Tom', 21, '20202501'], ['Jim', 20, '20181720'], ['Susan', 19, '20201908']]

將性別添加到年齡后面

>>>data[0].insert(2,"男")
>>>data[1].insert(2,"男")
>>>data[2].insert(2,"女")
>>>data
[['Tom', 21, '男', '20202501'], ['Jim', 20, '男', '20181720'], ['Susan', 19, '女', '20201908']]

將Susan的資訊從串列中洗掉

>>>data.pop()
['Susan', 19, '女', '20201908']
>>>data
[['Tom', 21, '男', '20202501'], ['Jim', 20, '男', '20181720']]

或者
>>>del data[-1]
>>>data
[['Tom', 21, '男', '20202501'], ['Jim', 20, '男', '20181720']]

洗掉所有學號資訊

data = [['Tom',21,'20202501'],['Jim',20,'20181717'],['Susan',19,'20201908']]
for i in data:
    i.pop()
print(data)

[['Tom', 21], ['Jim', 20], ['Susan', 19]]

獲得所有人的姓名

data = [['Tom',21,'20202501'],['Jim',20,'20181717'],['Susan',19,'20201908']]
names = []
for i in data:
    names.append(i[0])
print(names)

['Tom', 'Jim', 'Susan']

六、串列的高級應用

1.多維串列排序

將以上data中的資訊按照子串列中的學號資訊升序排序

我們可以使用sort或sorted進行排序,按照要求我們需要根據個人的學號資訊進行排序,它在個人資訊中索引是2,

這里我們將使用key這個引數,如前所述,它的作用是指定排序比較的元素,key引數的值應該是一個獲取比較元素的函式,此函式將在每個元素比較前被呼叫,

data = [['Tom',21,'20202501'],['Jim',20,'20181717'],['Susan',19,'20201908']]
data.sort(key = lambda x:x[2]) # 利用lambda建構式
print(data)

[['Jim', 20, '20181717'], ['Susan', 19, '20201908'], ['Tom', 21, '20202501']]

也可以直接定義一個函式作為key的值

def getindex(index):
    return index[2]


data = [['Tom', 21, '20202501'], ['Jim', 20, '20181717'], ['Susan', 19, '20201908']]
data.sort(key=getindex)
print(data)

[['Jim', 20, '20181717'], ['Susan', 19, '20201908'], ['Tom', 21, '20202501']]

再看一個串列中字典的排序,要求根據key為1的值進行排序,[2](在原文基礎上有一定改動)

L = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]
def f2(a):
    return a[1]
L.sort(key = f2)
print(L)

[{1: 1, 2: 4, 5: 6}, {1: 3, 6: 3}, {1: 5, 3: 4}, {1: 9}]

2.串列推導式

串列推導式(list comprehension)也稱為串列決議式,是一種創建串列的簡潔語法,

假設要生成一個1到100以內所有偶數,我們常規的做法是:

numbers = []
for i in range(1,101):
    if i % 2 == 0:
        numbers.append(i)
print(numbers)

使用串列推導式我們可以簡化為:

numbers = [x for x in range(1,101) if x % 2 == 0]
print(numbers)

是不是感覺簡化了很多,串列推導式只有一行代碼,

串列推導式的結構:[添加的目標元素 for 變數 in 可迭代的序列 if 篩選的條件]

再看幾個例子:

# 將10以內所有奇數的平方存入串列
numbers = [x**2 for x in range(1,11) if x % 2 != 0]
print(numbers)

[1, 9, 25, 49, 81]

# 將串列中所有起始為‘b’的單詞存入串列
word_startwith_b = [x for x in ['red','blue','green','black','pink'] if x.startswith('b')]
print(word_startwith_b)
['blue', 'black']

# 將串列中所有單詞存入串列
animals = [x for x in ['lion','tiger',1,333,'elephant'] if str(x).isalpha()]
print(animals)
['lion', 'tiger', 'elephant']

3.構造多維串列

原意是創建一個包含3個空的子串列的串列,然后將0存入其中第2個串列下,但是輸出后發現,三個子串列都新增了0,

觀察發現,3個子串列都是同一個id,

numbers = [[]] * 3
numbers
[[], [], []]
numbers[1].append(0)
numbers
[[0], [0], [0]]
for i in range(len(numbers)):
...     print(id(numbers[i]))
...     
4472764480
4472764480
4472764480

正確的方法如下:

numbers = [[] for i in range(3)]
print(numbers)

for index in range(len(numbers)):
    numbers[index].append(index)
    print(id(numbers[index]))

print(numbers)


[[], [], []]
4414227648
4414217216
4414678208
[[0], [1], [2]]

七、練習

1.串列基礎練習

lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]

完成以下任務:
1.在串列的最后插入100
2.將30插入到串列的中間位置
3.將索引為3的元素洗掉
4.將[22,33,44]合并到串列的最后
5.將串列中的元素從大到小、從小到大各排序一次,

2.串列復雜練習

lst	= [11, 22, 33, [44, 55, 66, 77, [88, 99, 100, 110]]]

編程完成以下任務:
1.輸出lst的長度
2.輸出lst中元素的和
3.將55修改為5555
4.輸出99
5.將[7788,8899]插入到66的后面
6.找出串列中所有元素的最大值

在完成以上操作后,思考回答以下問題:
1.lst[-1][-1][-2]是什么?
2.len(lst[-1][-1])是多少?
3.lst[-1][1:3]是什么?
4.lst[-1][-1][1:-2]是什么?

3.有一個已經排好序的串列[23, 24, 30, 32, 40, 46, 61, 65, 87, 96],用戶隨機輸入一個數,將它按原有規律插入串列中,

4.products = [["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60],["Nike",699]],需列印出以下格式,

------  商品串列 ------
0  iphone    6888
1  MacPro    14800
2  小米6      2499
3  Coffee    31
4  Book      60
5  Nike      699

5.在上題基礎上,撰寫一個程式,實作不斷詢問用戶想買什么,提示用戶輸入商品編號,就把對應的商品添加到購物車里,同時顯示當前購物車中的商品串列和總價格,最終用戶輸入q退出時,列印購買的商品串列及總價格,

八、第十課練習答案

1.有一分數序列,2/1、3/2、5/3、8/5、13/8、21/13……,求出這個數列的前20項之和,

x = 2
y = 1
summary = 0
for i in range(20):
    summary = x/y
    x,y = x+y,x
    print(x,y)

print('數列的前20項之和為%.4f'%summary)

2.求1+2!+3!+4!+……+20!的值,

summary = 0
for i in range(1,21):
    n = 1
    for j in range(1,i+1):
        n *= j
    summary += n

print('1+2!+3!+4!+……+20!的值為%i'%summary)

3.將“hello world”用相反順序列印出來,

words = "hello world"
print(words[::-1])

4.判斷字串中是否有連續三個英文單詞,如:"Hello World hello"的結果為True、"He is 123 man"的結果為False、"1 2 3 4"結果為False、"bla bla bla bla"的結果為True,(提醒:可能需要用到split()、isalpha()、isdigit()等函式)

words = "He is 123 a 23 good man"
sum = 0
for word in words.split():
    if word.isalpha():
        sum += 1
        if sum == 3:
            print(True)
            break
    elif word.isdigit():
        sum = 0
else:
    print(False)

參考文獻:

[1]Python3串列.https://www.runoob.com/python3/python3-list.html

[2]https://www.zhihu.com/question/36280272

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/231479.html

標籤:其他

上一篇:C語言每日一題(四)

下一篇:cgb2008-京淘day10

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more