!!! 從第四課的留言開始
Learn More →
–
可以利用 append 把資料一一放進去,大概像下面這樣的概念再配合迴圈運作:
可以從 List 中間插入數值。
如果是多個數值可能會失敗
List 和 Tuple 都可以是巢狀結構
List 裡面不一定要放型態一樣的東西
巢狀列表的英文是 NESTED LIST。
list模組下的函式
刪除單一元素的方法
–
# 有序可變動列表 List
grades=[12,60,25,70,90]
print(grades)
print(grades[0])
print(grades[3])
print(grades[1:4])
grades=[12,60,25,70,90]
grades[0]=55 # 把 55 放到列表中的第一個位置
print(grades)
grades=[12,60,25,70,90]
grades[1:4]=[] # 連續刪除列表中從編號 1 到編號 4(不包括) 的資料
print(grades)
grades=[12,60,25,70,90]
grades=grades+[12,33]
print(grades)
grades=[12,60,25,70,90] # 取得列表的長度 len(列表資料)
length=len(grades)
print(length)
data=[[3,4,5],[6,7,8]]
print(data[0])
print(data[0][1])
print(data[0][0:2])
print(data)
data[0][0:2]=[5,5,5]
print(data)
# 有序不可變動列表 Tuple
data=(3,4,5)
# data[0]=5 # 錯誤︰Tuple的資料不可以變動
print(data[2])
print(data[0:2])
老師我想問怎麼依序輸入列表,像C語言寫法是
for(int i=0;i<N;i++)
scanf("%d",&ary[i]);
那PyTHON 要怎麼寫
---
利用 append 把資料一一放進去,大概像下面這樣的概念再配合迴圈運作:
list=[]
list.append(3)
list.append(4)
請問老師[10,13,14,15,16]要插入數字可以嗎? 可以從中間插入或是第一個就插入嗎? 比方說
插入 11變成[10,11,12,13.....] or [9,10,13,14...]
---
list=[10,13,14,15,16]
list.insert(1, 11)
print(list)
↓下面這個留言可以學一下。
老師你好 對於影片5:44處 還有一些疑問
現在grades = [12, 60, 15, 70, 90]
然後我想要一次印出 [12, 60, 90] i.e print (grades[0, 1, 4])
但是 如國執行 print (grades[0, 1, 4]) 會有錯誤 TypeError: list indices must be integers or slices, not tuple
請問該如何修正
同樣 如果相同資料 grades = [12, 60, 15, 70, 90]
我只想印出大於或等於 60的資料 我期待是 [60, 70, 90]
我的想法 print(grades > 60) 但是同樣無法執行
請問該如何修正
不知道以上問題該如何解決 還請老師回答 謝謝
---
第一個問題你可以先分別取出在串起來,如下:
grades=[12, 60, 15, 70, 90]
print(grades[0:2]+grades[4:5])
第二個問題我們可以寫一個迴圈去做搜尋,並且把結果存放到另一個列表中再展示出來,例如:
grades=[12, 60, 15, 70, 90]
betterGrades=[]
for data in grades:
if data>=60:
betterGrades.append(data)
print(betterGrades)
---
也可以之後用 pandas 的模組解決。
import pandas as pd
grades=[12, 60, 15, 70, 90]
data=pd.Series(grades)
condition=data>=60
print(data[condition])
↓下面這個留言可以學一下。
不好意思,想請問一下老師
如果是a=[(1,2,3),(4,5,6)]
巢狀的要如何判斷3是不是在a裡面呢?
3 in a[0] =>這種寫法是可行,但是這是我已經知道了(1,2,3)是在list第0個位置
假設今天資料是很長一串list,我想找某個元素是否有在裡面的話,大概要如何做呢?
感謝
---
結合迴圈,去逐一抓取列表中的每一個子項目,然後再判斷是否在其中,例如:
for s in a:
if 3 in s:
print("存在")
↓下面這個留言可以學一下。
請問如果想呼叫以下每個列表的第一個數字
為什麼寫成print(y[0:3][1])後答案是[6, 7, 8]而不是[1,6,9]。
y=[[1,2,3],[6,7,8],[9,10,11]] #巢狀列表
不好意思我是新手發問,有許多不懂,希望老師能幫我解答,謝謝。
---
y 裡頭中的三個元素是三個子列表。
y[0:3] 代表 y 中的第一到第三個元素,也就是裡面的三個子列表。
然後 y[0:3][1] 代表三個子列表中的第二個,也就是你看到的 [6, 7, 8]
---
如果要顯示每個的第一個,可以使用迴圈
for x in [0,1,2]:
print(y[x][0])
或是
for x in range(3):
print(y[x][0])
↓下面這個留言可以學一下。
謝謝老師 但是我有點問題 就是既然List和Tuple只在能不能更動資料上有差異,那Tuple有什麼存在的必要呢?全部都用List打不是最方便嗎?
---
Tuple的特性是immutable(不變性),有些場合我們不希望資料Build出來後會再被變動,例如多線程的部份,或者物件的狀態比較等等,這時候就適合使用具有不變性的資料集。
---
既然tuple不可變動,而list可以,為什麼不只用list?
---
只用 list 是可以的哦。只是介紹一下有其他東西,不能動的東西通常運算效率會好一些 :)
↓下面這個留言可以學一下。
老師,請問若data=[3,4,5],[6,7,8]
我想把4改成[9,9]
輸入data[0][1]=[9,9]
會出現[3,[9,9],5]
請問該如何打才不會多出現一對中括號
---
單一項好像容易出狀況。但若以 12:40 例子來看,用不同長度的資料取代原有範圍可行
我想到的方法是
data=[ [3,4,5], [6,7,8] ]
data [0][0:2] = [3,9,9]
print (data)
↓下面這個留言可以學一下。
data[ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ]
請問如何將[ 1 , 2 , 3 ]消除?
(print(data)終端機跑出[ [ 4 , 5 , 6 ] ])
---
最直接的做法就:
del data[0]
↓下面這個留言可以學一下。
請問彭彭老師,使用副檔名為.py 或.IPYNB有何不同呢?
因為之前都是用jupyternoterbook在練習,最近才轉換使用編譯器進行練習。
但其實不太清楚用jupyter 或visaul studio在撰寫python上有何差異?
在煩請老師解惑
---
jupyter 是特殊的運作環境,你在我的影片中學到的是一般性的 python 運作環境,一般性的環境未來會比較容易擴展到別的應用,例如網站伺服器等等。
當成是兩種東西來學就可以。
彭彭老師,想請教一下。老師第一堂課講 「# 中文字 」是程式中的註解,
打中文字是沒問題的,
但是為什麼我運算時會出現SyntaxError: Non-ASCII character '\xe6' in file list-tuple.py ?
我查了網上寫在文件頭部添加# coding=utf-8就可以解決(試過可以),但是想知道是不是因為我沒設置好軟體本身導致的?
為什麼老師不用額外添加代碼就可以運算,謝謝
---
這可能是 Python 版本的問題,Mac 電腦確定有安裝最新的 Python 3 版本,執行時使用:python3 檔案名稱
↓下面這個留言可以學一下。
例題內容:
請輸入喜歡的水果(Enter 結束):木瓜
木瓜 不在list清單中
請輸入喜歡的水果(Enter 結束):西瓜
西瓜 在list清單中的第5項
請輸入喜歡的水果(Enter 結束)
a=["蘋果","草莓","芒果","芭樂","西瓜","芭樂"]
while True:
b=input("請輸入喜歡的水果(Enter 結束):")
n=a.count(b) # b 在 a(list)中,出現的次數。
print(n)
if n>0:
p=a.index(b) # b 在 a(list)中,出現的第一個位置。
print(b,"在list清單中的第",p+1,"項")
elif n==0:
print(b,"不在list清單中")
else:
break
↓下面這個留言可以學一下。
彭彭老師,請問一下
我在練習刪除時,使用空格取代,但原來列表雖被成功取代,但同時也留下 [ ] 的符號,在列表內
請問這是哪個步驟出錯了呢?
---
我的影片中是刪除一整段,若要刪除單一元素,可以這樣處理:
list[0:1]=[] # 刪除編號 0 的元素
或是可以用 del
del list[0] # 刪除編號 0 的元素
↓下面這個留言可以學一下。
請教一下
grades=[12,60,15,70,90]
grades[0:2]=55,55,55
grades[0:2]=[55,55,55]
print(grades)
我試過2、3行的寫法跑出來的結果都一樣是[55, 55, 55, 15, 70, 90],請問一下是否兩種寫法都是正確的呢,有什麼差異性嗎
data=[[3,4,5],[6,7,8]]
data[0][0:2]=5,5,5
data[0][0:2]=[5,5,5]
print(data)
二維的我也是一樣有試過跑出來的結果都一樣是[[5, 5, 5, 5], [6, 7, 8]],請問一下是否兩種寫法都是正確的呢,有什麼差異性嗎
--- 彭彭
55,55,55 或 5,5,5 都會直接被當成 tuple 處理,所以都是可以的。最後結果也確實不會有什麼差別。
---
想再問一下老師,可是[]不就是list,為甚麼會被當成tuple 處理呢?
另外:
grades=[12,54,90,78,44]
grades[2]=30
跑出來的結果是[12,54,30,78,44]
如果是grades[2]=[30],跑出來的結果就會變成[12,54,[30],78,44]
為甚麼這個會有這個差別?
但是
grades=[12,60,15,70,90]
grades[0:2]=55,55,55 和grades[0:2]=[55,55,55]跑出來的結果會沒差呢?
---
data=[[3,4,5],[6,7,8]]
data[1][0]=9,8 #data[1][0]=(9,8) 結果一樣, 如果[9,8]印出來就不一樣
print(data)
[[3, 4, 5], [(9, 8), 7, 8]]
老師應該就是這個意思吧?
---
grades=[12,54,90,78,44]
grades[0:2]=30,33 #(30,33) 或[30,33] 三個結果印出來都一樣
print(grades)
[30, 33, 90, 78, 44]
跟單純grades[0]=30 # 30改成(30) 結果一樣, 但30改成[30]就不一樣
這種取代 要怎麼界定什麼時候要括號什麼時候不用呢? 謝謝
↓下面這個留言可以學一下。
請問老師有辦法教學中指的不可變動 是指不能update的意思嗎? 那麼資料的 add和del也算進去嗎
因為剛剛測了
grades = (12,60,15,70,90)
grades = grades + (1,2)
print( grades )
這個語法是可行的
另外
#可以解釋為甚麼不同的資料型態可以串接嗎?
grades = [12,60,15,70,90]
grades = grades + ([12,60])
print( grades )
gradesEng = (12,13,14)
gradesEng = gradesEng + [(1,2)] #那麼這裡會出錯的問題是為何呢?
---
確實是不能 update,例如 grades[0]=3 就會錯誤。
你的程式其實是取得兩個 tuple 的資料,並產生一個新的 tuple,最後覆蓋變數 grades。
後面的第一段
([12,60]) 其實被當成一個 List,括號是運算中的一個輔助。
括號的用途很多,有時候不一定被詮釋成 tuple,例如 3*(3+1) 這個括號就只是表明運算順序。
後面的第二段
基本就是不行,錯誤訊息也寫得很清楚:tuple 只能夠串接 tuple。
---
gradesEng = gradesEng + [(1,2)],這一行中的 [(1,2)],為什麽在python中會被認為是list?
---
外層是 [] 就被認為是 List,裡面包含一個項目 (1,2)
↓下面這個留言可以學一下。
彭彭老師想請教你 影片16:08 data[0]=5更改資料的部分為甚麼不是用()而是用[] 這裡不是在說明tuple?
---
建立 Tuple 是用 () 沒錯。
不過建立之後要去取得列表中的資料,還是得用:列表[編號],這樣的方式來處理嘍。
↓下面這個留言可以學一下。
請教彭彭老師:
data[0][0:2]=[5,5,5] 此定義比原來[0:2]編號多一個數值,print 結果data[0] 多一個數值變成4個,成為[5,5,5,5] ,此部分有何規範與限制嗎?
---
其實就像你看到的,把 [0:2] 這段範圍中原本的 2 個數值,用 [5,5,5] 取代,自然就多一個數值。
Python 的列表,尤其是 List,是動態的資料結構,可以輕鬆的新增、修改、刪除資料,只要基本語法有符合,大致上也沒甚麼特別的限制嘍 :)
↓下面這個留言可以學一下。
如何將input中的數據轉化成list
例子:
將 nums=input(2,3,4,5,7)
改成[2,3,4,5,7]
謝謝
---
字串可以使用 split 這個方法,例如:
nums=input("numbers:")
list=nums.split(",")
影片大綱 if 判斷式 1.1 單一判斷:if ... 1.2 雙向判斷:if ... else 1.3 多條件判斷:if ... elif ... else ... 補充資訊 2.1 不支援 switch 判斷式 ( 3.6 版 ) 2.2 使用 tab 做縮排,表達判斷式中的執行命令。
Oct 12, 2020影片大綱 算術運算:加減乘除、取餘數%、小數除法/、整數除法//、開次方**。 字串的表示法:單行、多行、跳脫字元。 字串的串接與重複。 字串中的字元與子字串:編號與索引操作。 影片 {%youtube bLRa4TZ99aY %}
Oct 10, 2020影片大綱 Python 資料型態(data type):數字、字串、布林值、列表 List、固定列表 Tuple、集合 Set、字典 Dictionary。 Python 變數宣告與使用。 影片 {%youtube FMruNSjHOzQ %} 筆記 各種資料型態
Oct 10, 2020[TOC] 影片大綱 Python 的簡單介紹。 如何安裝 Python,實務操作。 選擇文字編輯器,實務操作 Visual Studio Code。 撰寫、並且執行第一個 Python 程式。 影片
Oct 10, 2020or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up