主頁 > 軟體設計 > 自動化快速上手--Python(4)--【串列】--每天半小時

自動化快速上手--Python(4)--【串列】--每天半小時

2021-10-18 14:55:17 軟體設計

這里是清安,每天半小時,帶你快速上手Python,走向自動化,

目錄

串列

修改元素

添加元素

插入元素

洗掉元素

正、倒序

正序

倒序

reverse()方法

取值

負數取值

范圍取值

串列長度

下標改值

連接與復制

回圈串列

in和not in操作

便捷的賦值

串列操作

查找

添加

洗掉

排序

拼接

彈出

結合字串操作

回圈

range

list()

統計

切片


串列

串列:主要使用[ ]來表示,我這里的加了一個空格,便于看清哦!,看下面的例子

# 這里宣告一個變數,后續便于輸出
class_name = ["python", "java", "c", "php"]

這就是一個簡單的串列,[ ]加字串組成,那么如何訪問呢,其實跟我之前的一樣,直接列印就好了

print(class_name)

我們利用索引來取值,串列的左邊第一個值,索引值為0,自左向右推,python索引值為0,Java為1...

# 這里宣告一個變數,后續便于輸出
class_name = ["python", "java", "c", "php"]
print(class_name)  # 列印class_name串列
print(class_name[0])  # 索引輸出python
print(class_name[1])  # 索引輸出java
print(class_name[-1])  # 這里的-1是列印串列最后一個值,從右往左索引值依次增加為:-1,-2...
print(class_name[-2])  # 列印倒數第二個值

用上述的例子,我們可以恰當的使用其中一個值,上一節課講過的哦:可以適當的舉一反三哦!

# 這里宣告一個變數,后續便于輸出
class_name = ["python", "java", "c", "php"]
# 使首字母大寫
print(f"This is {class_name[0].title()}")

修改元素

# 這里宣告一個變數,后續便于輸出
class_name = ["python", "java", "c", "php"]
# 列印原來的值,便于比較
print(class_name)
# 利用索引進行修改里面的值
class_name[0] = "html"    #修改串列的第一個元素
class_name[1] = "大資料"    #修改串列的第二個元素
print(class_name)

添加元素

添加的值附加在串列的末尾

# 這里宣告一個變數,后續便于輸出
class_name = ["python", "java", "c", "php"]
# 列印原來的值,便于比較
print(class_name)
# 在串列的末尾添加一個元素
class_name.append("html")
print(class_name)

插入元素

# 這里宣告一個變數,后續便于輸出
class_name = ["python", "java", "c", "php"]
# 列印原來的值,便于比較
print(class_name)
# 在串列索引值0的位置前面插入一個元素
class_name.insert(0, "html")
print(class_name)

洗掉元素

有兩種方法,一種是.del,一種是.pop():兩者的區別,讓我們來理解一下吧:

del方法可以洗掉任意位置的串列元素,只需要知道它的索引值即可
洗掉后就無法再進行訪問了

當你需要洗掉串列的值后,又需要使用它時,就可以用到.pop()方法了
.pop()是洗掉末尾的元素,也可以通過索引指定移出元素,這里的洗掉其實先當于將元素移出當前串列

class_name = ["python", "java", "c", "php"]
# 通過索引來洗掉元素,洗掉后且無法再次使用
del class_name[0]
print(class_name)
# 這里宣告一個變數,后續便于輸出
class_name = ["python", "java", "c", "php"]
# 列印原來的值,便于比較
print(class_name)
# 移出末尾的值
poppd = class_name.pop()
# 列印我們之前移出的末尾的值
print(f"This is {poppd.title()}")

# eg:
# 你也可以通過索引來指定移出哪個元素
# poppd = class_name.pop(1)

根據值來洗掉元素:這個用法還是比較簡單的,當你不知道想要洗掉的元素所處的位置時,就用指定值來洗掉指定元素.remove():

# 這里宣告一個變數,后續便于輸出
class_name = ["python", "java", "c", "php"]
# 列印原來的值,便于比較
print(class_name)
class_name.remove("java")
print(class_name)

remove方法洗掉值后其實也可以使用,看下面的例子:

class_name = ["python", "java", "c", "php"]
class_remove = "java" # 定義一個變數接受賦值,指定洗掉java
class_name.remove(class_remove) # 洗掉串列中的值,因為前面我們已經指定的洗掉誰
print(f"I like {class_remove.title()}")

正、倒序

正序排序,永久性排序:按字母先后順序進行排序,a,b,c,d...數字的話從小到大啦!!!

正序

class_name = ["python", "bird", "c", "app"]
class_name.sort()
print(class_name)

class_num = ["2", "6", "1", "3"]
class_num.sort()
print(class_num)

倒序

class_name = ["python", "bird", "c", "app"]
print(sorted(class_name))
# 再次列印驗證是否是臨時修改
print(class_name)

reverse()方法

class_name = ["python", "bird", "c", "app"]
# 這里我們倒敘列印放在print里面直接列印的話就會是空值
print(class_name.reverse())
# 需要用變數直接使用函式,再通過列印才行哦
class_name.reverse()
print(class_name)

如果用到這個方法,你就得這么寫了,不然列印出來就會是空值,

取值

取值是根據下標來取值的,從串列的第一個字串開始,第一個字串下標是0:

list_number = ['cat','dog','snake','elephant']
print(list_number[0])
print(list_number[1])
print(list_number[2])
#其對應的值是:
#cat
#dog
#snake

負數取值

list_number = ['cat','dog','snake','elephant']
print(list_number[-1])
print(list_number[-2])
print(list_number[-3])
#其對應的值是:
#elephant
#snake
#dog

范圍取值

list_number = ['cat','dog','snake','elephant']
print(list_number[:3])
print(list_number[1:3])
print(list_number[1:])
print(list_number[:-1])
# 其對應的結果是:
#['cat', 'dog', 'snake']
#['dog', 'snake']
#['dog', 'snake', 'elephant']
#['cat', 'dog', 'snake']

串列長度

list_number = ['cat','dog','snake','elephant']
print(len(list_number))
#其結果是:
#4

下標改值

list_number = ['cat','dog','snake','elephant']
list_number[1] = 'nono'
print(list_number)
#    其結果是:
#['cat', 'nono', 'snake', 'elephant']

連接與復制

list_number = ['cat','dog','snake','elephant']
list_1 = ['tom','tim']
print(list_number+list_1)
#    其結果是:
#['cat', 'dog', 'snake', 'elephant', 'tom', 'tim']
#復制
list_1 = ['tom','tim']
print(list_1*3)
#    其結果是:
#['tom', 'tim', 'tom', 'tim', 'tom', 'tim']

回圈串列

有關for回圈可以去看看快速上手系列for回圈,后續本系列也會出詳解,

list_number = ['cat','dog','snake','elephant']
for i in list_number:
    print(i)
#    其結果是:
# cat
# dog
# snake
# elephant

in和not in操作

用于判斷串列中是否存在一個值

list_number = ['cat','dog','snake','elephant']
print('cat' in list_number)    #T
print('cat' not in list_number)    #F

便捷的賦值

便捷的賦值陳述句普通的賦值陳述句
a+=1a = a+1
a-=1a = a-1
a*=1a = a*1
a%=1a = a%1
a/=1a = a/1

串列操作

查找

#回傳值的下標,如果重復值,只會回傳第一次的值
list_number = ['cat','dog','snake','elephant']
print(list_number.index('dog'))

添加

# 可以指定添加到某個位置
list_number = ['cat','dog','snake','elephant']
list_number.insert(1,'monkey')
print(list_number)
#  其結果是:
#  ['cat', 'monkey', 'dog', 'snake', 'elephant']
# 只能添加到末尾的位置
list_number = ['cat','dog','snake','elephant']
list_number.append('monkey')
print(list_number)
# 其結果是:
# ['cat', 'dog', 'snake', 'elephant', 'monkey']

洗掉

list_number = ['cat','dog','snake','elephant']
list_number.remove('cat')
print(list_number)
# 其結果是:
# ['dog', 'snake', 'elephant']
list_number = ['cat','dog','snake','elephant']
del list_number[1]
print(list_number)
# 其結果是:
# ['cat', 'snake', 'elephant']

排序

# 按字母順序進行排序
list_number = ['c','d','s','a']
list_number.sort()
print(list_number)
# 其結果是:
# ['a', 'c', 'd', 's']
# 倒敘
list_number = ['c','d','s','a']
list_number.reverse()
print(list_number)
# 其結果是:
# ['a', 's', 'd', 'c']

拼接

list_number = ['c','d','s','a']
list_1 = ['小北']
list_number.extend(list_1)
print(list_number)
# 其結果是:
# ['c', 'd', 's', 'a', '小北']

彈出

list_number = ['c','d','s','a']
list_1 = []
n = list_number.pop(1)
print(list_number)
list_1.append(n)
print(list_1)
# 其結果是:
# ['c', 's', 'a']
# ['d']

指定彈出索引位置的值,我們還可以進行呼叫哦,

結合字串操作

list_number = ['tom','luci','xifa','BOB']
for i in list_number:
    print(i.upper())
# 其結果是:
# TOM
# LUCI
# XIFA
# BOB

這里只舉出了全部大寫的例子,結合字串所學,寫法一致!

回圈

# 定義一個串列
name_study = ['chinese','english','math','pe']
# 使用for回圈,定義一個變數回圈串列
for i_name in name_study:
#列印我們的回圈結果
    print(i_name)

這里這個i_name是新定義的一個變數,用于獲取name_study里面的值,

# 結果
chinese
english
math
pe

range

上述不明白看看下面

for num in range(1,5):
    print(num)

# 結果
# 1
# 2
# 3
# 4

range這里的可以這樣理解:range(1,5),在for回圈中使用我們定義的num變數進行1~5之間的數字回圈,但是因為range函式的本身的原因,所以5是不會列印的,如果要列印1~5所有的數字,就需要改一下range里面的引數:看代碼

for num in range(1, 6):
    print(num)

將range里面的5,改成6,使用for回圈就可以列印出1-5所有的數字啦

list()

下面我們將回圈出來的數字變成串列形式

num = list(range(1,6))
print(num)

# [1, 2, 3, 4, 5]

也可以設定一定的步長,所謂的步長就是個幾個數取一次值

num = list(range(1, 11, 2))
print(num)

# [1, 3, 5, 7, 9]

統計

num = [20, 30, 50, 80, 40, 10]
print(min(num))    # 最小的一個數
print(max(num))    # 最大的一個數
print(sum(num))    # 串列的數字和

切片

切片呢,是在串列中我們可以使用索引值來處理它的一部分元素,就不需要一個一個再列印了,對于這種python中稱之為切片,看例子:

# 創建一個串列
num = ['python', 'java', 'c', 'php', 'html', 'c++']
# 利用索引值來完成切片
print(num[0:3])

這里的[0:3],0是起始索引位置,3是終止索引位置,3的位置是終止位置不取,其結果是:

['python', 'java', 'c']

這就是切片,小伙伴明白了嗎,能夠使用索引值來處理串列的部分元素的操作就是切片哦!!!

切片還有很多的操作哦,看接下來的介紹:

寫法:

num[start, end, step]
	start:開始切片的位置(包含)
	end:結束切片的位置(不包含)
	step:間隔資料個數

上面我們講的是順序切片,這回我們講倒敘切片:

num = ['python', 'java', 'c', 'php', 'html', 'c++']
print(num[-2:])

例子解釋:倒敘,按循序切片,從倒數第二個開始往后取值,其結果是:

['html', 'c++']

間隔位置切片:

num = ['python', 'java', 'c', 'php', 'html', 'c++']
print(num[1::2])
例子解釋:間隔位置切片,從索引位置1開始取值,途中每隔兩個取一個當前值

串列旋轉:

num = ['python', 'java', 'c', 'php', 'html', 'c++']
print(num[::-1])

例子解釋:顧名思義就是將串列旋轉倒過來列印出來,其結果是:

['c++', 'html', 'php', 'c', 'java', 'python']

接下來就是我么的一個小實戰:

num = ['python', 'java', 'c', 'php', 'html', 'c++']
print(num[4:1:-1])

在這里,可以舉一反三的去思考思考,自己也可以舉例然后使用切片去將串列中想要列印的元素列印出來

解釋:因為串列的操作,-1將串列旋轉,然后從索引值1的位置開始取值,到索引值4的位置,但是4不取,因為4的位置是終止位置,

接下來我們就開始進入下一個實用例子,遍歷切片:

num = ['python', 'java', 'c', 'php', 'html', 'c++']
for num_first in num[:3]:
    print(num_first)

遍歷切片,其實就是使用for回圈去回圈我們想要列印串列中的部分元素哦,num[:3]就是前三個元素,然后我們定義一個變數num_first,去回圈前三個元素,最后列印我們定義的變數,

遍歷切片,不懂的小伙伴也可以理解為回圈想要輸出的元素,

上述例子看不明白的看看下面這個例子,清安將上面的多定義了一個變數,便于小伙伴理解怎么回事哦!

num = ['python', 'java', 'c', 'php', 'html', 'c++']
# 定義一個變數,接受我們想要輸出的部分元素,也是就切片部分
num_list = num[:3]
for num_first in num_list:
    print(num_first)

復制一個串列:

創建一個始于第一個元素,終于最后一個元素的切片,就是我們想要復制的串列,即副本

num = ['python', 'java', 'c', 'php', 'html', 'c++']
number = num[:]
print(number)

我們先定義一個變數使其等于已經定義的num串列切片,這個切片的寫法就是num[:],然后我們輸出number變數,就可以看到原串列的副本啦,就是我們所要的復制串列!!!

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

標籤:其他

上一篇:??強烈推薦,微信開發者工具配置Less支持,開發爽666

下一篇:二叉排序樹

標籤雲
其他(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