"""
"""
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()