不知道大家Friday night過得好嗎?我們還是繼續來動動腦吧!
昨天的題目還是
Q. 現在有一個陣列[5, 3, 4, 9, (3,5), ['I', 'T', 'iron'], 'man']請問這裡面有幾個element?
若取出element只有數字的部分,接著把最後一個和第二個數字交換,則這一個只有數字的list為何?
L=[5, 3, 4, 9, (3,5), ['I', 'T', 'iron'], 'man']
num=L[:4]
num[-1],num[1]=num[1],num[-1]
print(len(L)) #output:7
print(num) #output:[5, 9, 4, 3]
關於數字交換,在Python中可以直接a,b=b,a
,但還是建議開始學習程式的新手還是要看得懂下面數字交換的方法:
num=[5, 3, 4, 9]
b=num[3]
num[3]=num[1]
num[1]=b
print(num) #output:[5, 9, 4, 3]
好了~關於昨天的作業我們就先這樣吧!
假設有list L1和list L2:L1.extend(L2)
:將L2接在L1後面L1.reverse()
:將L1的排序前後倒置L1.sort()
:將L1裡面的數值由小到大排序,但如果不想要移動原本的list的話,則可以使用sorted(L)
,可以得到相同的效果喔L1.insert(index, value)
:將value插入在index的位置,剩下的內容往後推移一個單位sum(L1)
:如果L1裡面都是數值的話,可以用sum
回傳每個元素的數值相加後的結果max(L1)
或min(L1)
:如果L1裡面都是數值的話,可以用max
或max
回傳list中最大或最小的值
L=[1, 5, 2, 7, 8, 4]
Q=[12, 50, 32]
st=['baby','King','Mac','knife','boy','babe','food']
print(sorted(L)) #output:[1, 2, 4, 5, 7, 8]
print(sorted(st)) #output:['King', 'Mac', 'babe', 'baby', 'boy', 'food', 'knife']
conbi=L+Q
L.extend(Q)
print(L) #output:[1, 5, 2, 7, 8, 4, 12, 50, 32]
print(conbi) #output:[1, 5, 2, 7, 8, 4, 12, 50, 32]
print(L.sort(reverse=True)) #output:[50, 32, 12, 8, 7, 5, 4, 2, 1]
Q.insert(1, 95)
print(Q) #output:[12, 95, 50, 32]
我們就上面幾項再做詳細說明:
不管是.sort()
或者sorted()
在排序的過程中,會將reverse
這個參數默認為False
,所以在操作時若沒有特別指定,一率都是由小到大排序,當reverse=True
,此時排序就會由大到小
在使用.sort()
或者sorted()
時只可以針對由字串組成的list或者由整數及小數組成的list進行排序,若list同時有字串及數字時,則會出現錯誤訊息,另外字串在比較時,會利用他們的ASCII的數值大小比較,而排序會由第一個字母進行比較,若相同則繼續往下一個字母比較,直到結束為止~
#純數比較
K=[3, 2, 4, 2.5, 4.5]
print(sorted(K)) #output:[2, 2.5, 3, 4, 4.5]
#字串比較
st=['baby','1','knief','2','food','15']
print(sorted(st)) #output:['1', '15', '2', 'baby', 'food', 'knief']
st=['app','a']
print(sorted(st)) #output:['a', 'app']
#純數與字串混合不能比較
st=['baby',1,'knief',2,'food',15]
print(sorted(st))
#output:TypeError: '<' not supported between instances of 'int' and 'str'
L+Q
和L.extend(Q)
可以達到相同效果,但唯一不一樣在後者會改面L原本的樣子,但前者則不影響,需要再用一個變數進行儲存當然還沒有啊!這樣樣的操作過程中,不知道你有沒有覺得字串好像有些操作好像會跟list很像呢?
以下我們直接舉例好了!
A='asdfghjkl'
print(A[:5]) #output:'asdfg'
print(A[1:7:2]) #output:'sfh'
a='How '
b='you '
c='doin'
print(a+b+c) #output:'How you doin'
** 字串不一樣在於大多數的list的指令無法使用!**
當然不是囉~讓我們繼續看下去len(str)
:可知字串長度,空白字元也會計算!str.split(...)
:可將字串進行切割,若括號中都不放則默認空白字元的地方切割,或者可以指定切割位置,如',',切割完後的結果會存放在list中str.replace(target,obj,count)
:在字串str中將你想要換掉字元(target),利用新字元(obj)進行取代,看字串出現幾次target,若沒有指定count次數,則會將字串中所有target取代為obj,若有指定取代count次,則從頭一去取代到指定次數,若count次數超過target出現次數,則會將全部target取代為obj。
講了這麼多,直接來看範例比較快!
A='Hey, Hey, How you doin.'
print(len(A)) #output:18
print(A.split()) #output:['Hey,', 'Hey,', 'How', 'you', 'doin.']
print(A.split(',')) #output:['Hey', 'Hey', ' How you doin.']
print(A.replace('Hey','Hi',0)) #output:'Hey, Hey, How you doin.'
print(A.replace('Hey','Hi',1)) #output:'Hi, Hey, How you doin.'
print(A.replace('H','h')) #output:'hi, hey, how you doin.'
print(A.replace('H','h',5)) #output:'hi, hey, how you doin.'
好吧~也是夠多了~我們今天就在這裡停下來吧!
我們今天慶祝一下週末,我們今天就不要有練習吧~絕對不是我想偷懶