Python成長之路第一篇(2)-初識列表和元組

来源:http://www.cnblogs.com/bj-xy/archive/2016/01/23/5153842.html
-Advertisement-
Play Games

可以將列表和元組當成普通的“數組”,他能保存任意數量任意類型的Python對象,和數組一樣都是通過數字0索引訪問元素,列表和元組可以存儲不同類型的對象,列表和元組有幾處重要區別。列表元素用([])包括,元素的個數和值可以改變,而元組用({})包括,不能更改。元組可以看成是只讀的列表一、初識列表1、下...


可以將列表和元組當成普通的“數組”,他能保存任意數量任意類型的Python對象,和數組一樣都是通過數字0索引訪問元素,列表和元組可以存儲不同類型的對象,列表和元組有幾處重要區別。列表元素用([])包括,元素的個數和值可以改變,而元組用({})包括,不能更改。元組可以看成是只讀的列表

一、初識列表

1、下麵是一個正常的列表

>>> lis = ['xiaoyuan',25]

在序列中,可以包含其他的序列,也就是列表可以包含列表元組等

>>> lis = ['xiaoyuan',25]
>>> lis_jo = ['john',30]
>>> date = [lis,lis_jo]
>>> date
[['xiaoyuan', 25], ['john', 30]]

註意:Python中還有一種名為容器(container)的數據結構。容器基本上是包含其他對象的任意對象。序列型(例如列表,元組)和映射型(例如字典)。序列中的每個元素都有自己的編號,而映射的每一個元素都有一個名字(也稱為鍵)。後續會介紹,至於不是序列也不是映射的容器類型,例如集合(set),後序介紹

2、序列的通用操作

所有序列類型都可以進行某種特定的操作,這些操作包括:索引(indexing),分片(sliceing),加(adding),乘(multiplying)以及檢查每個元素是否屬於序列的成員(判斷元素是否存在於序列)。還有計算序列的長度,找出最大元素和最小元素的內建函數。以後還有一個重要的操作進行講解,迭代(iteration)。對序列進行迭代的意思。

 

(1)索引序列中的所有元素都有編號這個編號從0開始遞增:

>>> lis = ['xiaoyuan',25]
>>> lis_jo = ['john',30]
>>> date = [lis,lis_jo]
>>> date
[['xiaoyuan', 25], ['john', 30]]
>>> sta = 'hellow'
>>> sta[0]
'h'
>>> sta[-1]
'w'
>>> date[0]
['xiaoyuan', 25]

由此可見【-1】表示最後一個元素

 

(2)分片

①我們可以使用分片來對一個範圍的元素進行操作

>>> tist = [1,2,3,4,5,6]
>>> new = "abcdefg"
>>> tist[1:3]
[2, 3]
>>> new[0:4]
'abcd'

>>> tist[2:]   #從第二個元素到最後
[3, 4, 5, 6]

②當我們想要從後面取元素怎麼辦?相信大家也知道了就是使用‘ – ’

>>> tist = [1,2,3,4,5,6]
>>>
>>> tist[-3:-1]
[4, 5]
>>> tist[-4:]   #這裡也就是從倒數第四個元素到最後
[3, 4, 5, 6]

小練習1

我們知道功能變數名稱是由www.xxxx.cn其中分為三個部分.cn為中國,xxxx表示功能變數名稱,www,表示萬維網那麼我們想要取出功能變數名稱怎麼辦呢?

1 >>> url = 'www.aaa.cn' 
2 >>> name = url[4:-3] 
3 >>> name
4 
5 'aaa'
6 
7 >>> print 'donaim name:<'+name+'>'+'type:'+url[-2:] 
8 donaim name:<aaa>type:cn
小練習1

③步長,也就是按照步長的長度來取元素,當步長為1的時候就會輸出所以的元素

>>> tist = [1,2,3,4,5,6,7,8,9,10]

>>> tist[0:10:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> tist[0:10:2]
[1, 3, 5, 7, 9]

如果我們想將元素從頭到最後每個3個元素取出一個那麼只需要這樣即可

>>> tist[::3]
[1, 4, 7, 10]

 

(4)追加元素 list.append

>>> lis = [1,2,3,4,5,6]
>>> lis.append(7)
>>> lis
[1, 2, 3, 4, 5, 6, 7]

 

(5)列表刪除元素del list[]

>>> lis
[1, 2, 3, 4, 5, 6, 7]
>>> del lis[0]
>>> lis
[2, 3, 4, 5, 6, 7]

 

(6)列表長度:len()

>>> len(lis)
6

 

(7)查找某個元素是否包含:“ 5“ in lis當存在返回True(真)否則為False(假)

>>> 5 in lis
True
>>> 1 in lis
False

 

(8)將列表變成字元串並定義連接方式 “_”.join(lis)

>>> name_lis = ["a","b","c"]
>>> '_'.join(name_lis)
'a_b_c’

 

(9)序列相加

>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]

>>> 'hell'+'world!'
'hellworld!'

 

(10)乘法 *

>>> 'hell'*5
'hellhellhellhellhell'
>>> [1]*5
[1, 1, 1, 1, 1]

 

(11)list函數,因為字元串不能像列表一樣修改所以,將字元串轉換成列表是就需要使用list(list函數適用於所有類型的序列)

>>> tup = 'asdfghj'

>>> list(tup)
['a', 's', 'd', 'f', 'g', 'h', 'j']

 

(12)元素賦值

>>> tup = list(tup)
>>> tup
['a', 's', 'd', 'f', 'g', 'h', 'j']
>>> tup[0] = 'A'
>>> tup
['A', 's', 'd', 'f', 'g', 'h', 'j']

小練習2

需求編寫一個歡迎信息,要求格式化成方盒進行輸出,並根據用戶輸入的內容而變換

     image

 

 1 inpot = raw_input("your name:") #歡迎信息
 2 text = len(inpot)
 3 scr = 17+text    #設置一個長度
 4 left = (scr) // 2     #設置前方空格的空隙
 5 #下方輸出的內容可以根據輸入字元串的長度進行變化
 6 print   #輸出空
 7 print ' ' * left + '+'+ '-'*(scr) + '+'
 8 print ' ' * left + '|'+ ' '*scr + '|'
 9 print ' ' * left + '|'+'Nice to meet you:' +inpot+ '|'
10 print ' ' * left + '|'+ ' '*scr + '|'
11 print ' ' * left + '+'+ '-'*(scr) + '+'
小練習2

 

二、初識元組

1、下麵是一個正常的元組

>>> name = ('a','b','c')
>>> name
('a', 'b', 'c')

元組的基本操作跟列表類似,唯一的區別就是列表可以修改元組不可以修改

當我們查看a是否包含在name_tup元組中可以正常執行,但是想刪除的時候就報錯錯誤為元組對象不支持項刪除

>>> name_tup = ('a','b','c')
>>> 'a' in name_tup
True
>>> del name_tup[0]

Traceback (most recent call last):
  File "<pyshell#45>", line 1, in <module>
    del name_tup[0]
TypeError: 'tuple' object doesn't support item deletion

最後推薦大家使用的編譯器Pycharm


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Java日期時間使用總結一、Java中的日期概述日期在Java中是一塊非常複雜的內容,對於一個日期在不同的語言國別環境中,日期的國際化,日期和時間之間的轉換,日期的加減運算,日期的展示格式都是非常複雜的問題。在Java中,操作日期主要涉及到一下幾個類:1、java.util.Date 類 Date ...
  • package dataStructure;import java.util.ArrayList;import java.util.Scanner;import java.io.*;class node { int to, dist; node(int t, int d) { ...
  • 主要介紹spring的容器事件是如何運作的,介紹之前當然要講它遵從什麼模式,什麼是事件,廣播器等等。
  • public struct NSSearchPathDomainMask : OptionSetType { public init(rawValue: UInt) public static var UserDomainMask: NSSearchPathDomainMask { get }...
  • iTop4412 irom啟動和Exynos4212 iROMBooting Guide是一樣的。製作itop4412 BL1的工具下載地址:http://download.csdn.net/detail/cj675816156/9101607iROM階段啟動流程本次介紹如何構建Exynos4412...
  • scanf()函數基礎擴充
  • 寫這篇博文的原因是因為自己寫的代碼經常會因為返工,delay項目的交付日期。總結了一下引起項目delay的原因,大概有如下幾點:在沒有完全深熟悉需求交互細節的情況下;諸如根據不同渠道設置不同的訂單狀態變更--超時提醒和訂單取消功能。在沒有想清楚自己代碼如何實現業務邏輯的情況下;諸如對騎手排班--.....
  • Python時間函數
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...