第一课 定义 列表
# 列表和元组 ---- 序列
# 序列:是数据元素的集合,数据元素可以是数值、字符串、布尔类型、对象等。
# 序列的类型:列表和元组

# 列表: 把一组值简单的放在一起的一种方式 和数组类似 

name = "Bill"
names = ["Bill", "Mary", "John"]
values = ["Bill", True, False, 10,20.5,[1,2,3,4,5]]

print(names)   # 输出结果为:['Bill', 'Mary', 'John']   把双引号变成了单引号  这个无关紧要
print(values)  # 输出结果为:['Bill', True, False, 10, 20.5, [1, 2, 3, 4, 5]]

for value in values:      # 通过for 语句 挨个获取 每一个列表中的值 
    print(value)
'''
输出结果 循环遍历 
Bill
True
False
10
20.5
[1, 2, 3, 4, 5]  
'''

---------------------------------------
第二课 序列的基本操作    通过索引操作序列元素 (也就是说列表和元组都是可以通过索引操作元素)   // 也就可以理解为shell中的三剑客 grep  sed  awk  这样子的操作 
# 序列的基本操作 ---- 通过索引获取序列的值
# 通过一个序号表示一个序列元素值,序号称为索引
# 索引从0开始,Python语言中,索引可以是负数

names = ["Bill", "Mary", "Jack"]
print(names[0])                # 输出结果为: Bill
print(names[2])                 # 输出结果为:Jack

s = "I love python"
print(s[0])                     #输出结果为:I
print(s[7])                     #输出结果为:p
print("Hello"[1])               #输出结果为:e 

#fourth = input('请输入年份:')[3]     # 比如输入 2019 那么输出的结果就是 9 取 最后的一位数
#print(fourth)

# 如果索引小于0   这个在python中是支持的 
print(names[0])
print(names[-1])  # Jack
print(names[-2])  # Mary
print(names[-3])  # Bill
#print(names[5])     # 超出索引的范围的话 就会抛出异常
# print(names[-4])

months = [
    '一月',
    '二月',
    '三月',
    '四月',
    '五月',
    '六月',
    '七月',
    '八月',
    '九月',
    '十月',
    '十一月',
    '十二月',
    ]

year = input('年:')
month = input('月(1-12):')
day = input('日(1-31):')
monthNumber = int(month)
monthName = months[monthNumber - 1]
print(year,"年",monthName, day,"日")
'''
输出结果为:
年:2019
月(1-12):8
日(1-31):4
2019 年 八月 4 日
'''

---------------------------------------------
第三课:序列的分片   //  就是去截取 所想要的东西 // 也就可以理解为shell中的三剑客 grep  sed  awk  这样子的操作 
# 分片(Slicing)
# 分片:从一个序列中获取子序列  
# 分片有3个参数:startIndex、endIndex和step(步长)开始索引和结束索引都可以省略 这个在后面中例子中讲到了 
# 分片可以截取子字符串

url = 'https://geekori.com'

print(url[0:5])             # 通过区间来获取一个字符串 输出结果为:https  左闭右开(左要右不要) 可以通过分片截取 字符串的操作
print(url[8:len(url)])      # 输出结果 geekori.com  len(url) 获取字符串的长度 
print(len(url))             # 输出结果为 19   获取字符串的长度 

# 下面我们来看 分片 如何截取 列表
numbers = [1,2,3,4,5,6,7,8]
print(numbers[1:3])  # [2,3]
print(numbers[0:6])  # [1,2,3,4,5,6]   左闭右开 
print(numbers[-3:-1]) # [6,7]

print(numbers[-3: 1])  # 当结束索引小于开始索引时,返回空的列表

# 省略开始索引和结束索引
print(numbers[4:len(numbers)]) # [5, 6, 7, 8]
print(numbers[4:])               # [5, 6, 7, 8]
print(numbers[1:])            # [2, 3, 4, 5, 6, 7, 8]

print(numbers[0:5])  # [1, 2, 3, 4, 5]
print(numbers[:5])   # [1, 2, 3, 4, 5]

print(numbers[:])    # [1,2,3,4,5,6,7,8]   全部省略的话,那么就是取所有的 

numbers1 = numbers[:]
numbers1[1] = 400
print(numbers)

# 设置分片的步长 
# 截取奇数序列
print(numbers[0::2]) # [1, 3, 5, 7]
# 获取偶数序列
print(numbers[1::2]) # [2, 4, 6, 8]

# 获取倒序排列
print(numbers[len(numbers):2:-1]) # [8, 7, 6, 5, 4]        len(numbers)开始索引 2为结束索引  -1步长    倒叙的步长 
print(numbers[len(numbers):3:-1]) # [8, 7, 6, 5]

print(numbers[::-1])  # 复制整个序列,并且将序列倒序排列 [8, 7, 6, 5, 4, 3, 2, 1]