python中序列、列表的使用

#coding = utf-8


"""
"""
def test_index():
    #字符串是由字節組成的序列
    greeting = "Hello"
    # 輸出的是H
    print("greeting[0] = %s"%(greeting[0]))
    # 輸出的是o
    print("greeting[-1] = %s"%(greeting[-1]))


    months = ["January", "February", "March", "April", "May", "June", "July", \
    "August", "September", "October", "November", "December"]
    endings = ['st', "nd", "rd"] + 17 * ['th'] + ['st', "nd", "rd"] + 7 * ['th'] + ["st"]
    # raw_input在3.*的版本中不再存在
    year = "2017"     #input("Year:")
    month = "10"      #input("Month(1 - 12):")
    day = "21"        #input("Day(1 - 31):")
    month_number = int(month)
    day_number = int(day)
    month_name = months[month_number - 1]
    ordinal = day + endings[day_number - 1]
    #輸出類似於October 21st.2017
    print(month_name + " " + ordinal + "." + year)


# 列表相關
def test_slice():
    #"索引是從0開始。"
    numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    print("numbers = %s"%(numbers))
    #輸出第3個到第6個元素(不含第6個), [4, 5, 6]
    print("numbers[3:6] = %s"%(numbers[3:6]))
    #倒數第3個到倒數第1個元素
    print("numbers[-3:-1] = %s"%(numbers[-3:-1]))
    #倒數第3個元素及之後的全部元素
    print("numbers[-3:] = %s"%(numbers[-3:]))
    #分片的時候,左邊索引必須先於右邊索引出現在序列中,否則得到的是空的序列, 如numbers[-3:0]得到[]
    print("numbers[-3:0] = %s"%(numbers[-3:0]))
    #默認分片時的步長爲1,可以使用更大的步長,如numbers[0:10:2]指定步長爲2
    print("numbers[0:10:2] = %s"%(numbers[0:10:2]))
    #numbers[::4]指定步長爲4, 輸出[1, 5, 9]
    print("numbers[::4] = %s"%(numbers[::4]))
    #序列相加,如:[1, 2, 3, 4] + [3, 4, 5, 6] = [1, 2, 3, 4, 3, 4, 5, 6]
    print("[1, 2, 3, 4] + [3, 4, 5, 6] = [1, 2, 3, 4, 3, 4, 5, 6] = %s" \
        %([1, 2, 3, 4] + [3, 4, 5, 6]))
    #序列乘法,如:[1, 2]*3 = [1, 2, 1, 2, 1, 2]
    print("[1, 2]*3 = %s"%([1, 2]*3))
    #list函數,list('你好') = ['你', '好']
    print("list('你好') = %s"%(list('你好')))
    print("")
    print("基本的列表操作")
    names = ["Alice", "Beth", "張三", "李四", "王五"]
    #改變第二個元素:names[1] = '奧巴馬'
    #然後列表的值會變爲:['Alice', '奧巴馬', '張三', '李四', '王五']
    names[1] = '奧巴馬'
    print("names = %s"%(names))
    names.append("新增的元素")
    #['Alice', '奧巴馬', '張三', '李四', '王五', '新增的元素']
    print("names = %s"%(names))
    #分片賦值,
    names[3:] = ["二號", "三號"]
    #得到:names = ['Alice', '奧巴馬', '張三', '二號', '三號'], '新增的元素'被清除。
    print("names = %s"%(names))
    names[3:] = ["十二號", "十三號", "超出的元素"]
    #得到:['Alice', '奧巴馬', '張三', '十二號', '十三號', '超出的元素']
    print("names = %s"%(names))
    #由上面的操作可以知道,分片的賦值其實就是一個替換的過程
    #即用新的序列替換舊的分片。
    del names[5]
    #刪除第5個元素,得到:['Alice', '奧巴馬', '張三', '十二號', '十三號']
    print("names = %s"%(names))
    names[4:5] = []
    #刪除第4個元素,得到:['Alice', '奧巴馬', '張三', '十二號']
    print("names = %s"%(names))


    print("列表的方法:")
    #append在列表的尾部增加新的元素
    names.append("奧巴馬")
    # ['Alice', '奧巴馬', '張三', '十二號', '奧巴馬']
    print("names = %s"%(names))
    #count統計某一個元素在序列中出現的次數。
    #如"奧巴馬"出現的次數爲2
    print("names.count('奧巴馬') = %d"%(names.count('奧巴馬')))
    #extend方法將一個序列增加到另外一個序列的尾部。
    names.extend(["馬克龍", "特朗普"])
    #得到:['Alice', '奧巴馬', '張三', '十二號', '奧巴馬', '馬克龍', '特朗普']
    print("names = %s"%(names))
    #注意extend方法和+加號的區別,+將創建一個新的列表,而extend是修改原有的列表。
    #index方法,找出第一個匹配的索引的未知
    #奧巴馬的索引位置是1
    print("names.idnex('奧巴馬') = %d"%(names.index('奧巴馬')))
    #insert方法,將對象插入到列表中
    #"馬克龍老婆"放到第一個位置,['Alice', '馬克龍老婆', '奧巴馬', '張三', '十二號', '奧巴馬', '馬克龍', '特朗普']
    names.insert(1, '馬克龍老婆')
    print("names = %s"%(names))
    #pop方法,移除列表中的一個元素,默認是最後一個元素。
    #第五個元素爲"奧巴馬"
    print("names.pop(5) = %s"%(names.pop(5)))
    #移除後的列表:['Alice', '馬克龍老婆', '奧巴馬', '張三', '十二號', '馬克龍', '特朗普']
    print("names = %s"%(names))
    #remove方法,移除列表中第一個匹配項
    names.append("奧巴馬")
    names.remove("奧巴馬")
    #刪除奧巴馬後的列表:['Alice', '馬克龍老婆', '張三', '十二號', '馬克龍', '特朗普', '奧巴馬']
    print("names = %s"%(names))
    #reverse方法,將列表中的元素反序。
    numbers = [4, 5, 6, 1, 3, 9]
    numbers.reverse()
    #反序後爲:[9, 3, 1, 6, 5, 4]
    print("numbers = %s"%(numbers))
    #sort方法,在原位置對列表排序。
    numbers.sort()
    #排序後:[1, 3, 4, 5, 6, 9]
    print("numbers = %s"%(numbers))
    # 高級排序。
    #根據key的長度排序
    names.sort(key=len)
    #排序後爲:['張三', '十二號', '馬克龍', '特朗普', '奧巴馬', 'Alice', '馬克龍老婆']
    print("names = %s"%(names))
    #反向:['馬克龍老婆', '馬克龍', '特朗普', '張三', '奧巴馬', '十二號', 'Alice']
    names.sort(reverse=True)
    print("names = %s"%(names))


#元組
def test_tuple():
    tuples = (1, 4, 6)
    print("tuples = ", (tuples))
    #tuple將列表轉換爲元組
    tuples = tuple([3, 8, 10, 7, 6])
    print("tuples = ", (tuples))


def main():
    print("通用序列的操作")
    print("*******************")
    print("******索引操作******")
    test_index()
    print("******索引操作結束******")
    print()
    print("*******************")
    print("******列表操作操作******")
    test_slice()
    print("******列表操作操作結束******")
    
    print("*******************")
    print("******元組操作操作******")
    test_tuple()
    print("******元組操作操作結束******")


if __name__ == '__main__':
    main()
發佈了37 篇原創文章 · 獲贊 7 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章