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