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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章