今天学习第二章,关于列表和元组。


1.序列有6种,如下:

python 序列返回索引 python序列的索引_字符串



集合是既不包含序列,也不包含映射的容器类型。


2.序列里面也可以包含序列:

>>> x=['a']
 >>> y=['b']
 >>> z=[x,y]
 >>> z
 [['a'], ['b']]或者
>>> x=['a',1]
 >>> y=['b',3]
 >>> z=[x,y]
 >>> z
 [['a', 1], ['b', 3]]可以写数值,可以写字符,双方混合也可以。

3.序列的排序是从0开始,一定要注意。
从左往右排序从第0号开始,后面是1,2,3,依此类推(默认排序)
从右往左排序从第-1号开始,后面是-2,-3,依此类推。
>>> x='1','2','3','4','5'
 >>> x[3]
 '4'或者
>>> x='1','2','3','4','5'
 >>> x[-2]
 '4'或者
>>> ‘hello'[1]
 'e'注意:字符串可以直接索引,不用加变量进行赋值。
 [ ]  是索引符号

4.如果函数调用了一个序列,可以直接对返回结果进行索引,如下:
>>> x = input('数字:')[1]
 数字:1024
 >>> x
 '0'
5.示范:
#根据给定的年月日以数字形式打印出日期
 months = [
     '1月',
     '2月',
     '3月',
     '4月',
     '5月',
     '6月',
     '7月',
     '8月',
     '9月',
     '10月',
     '11月',
     '12月'
     ]



#以1-31的数字做结尾的列表,英文的1,2,3,后面有专有的后缀,分别是1st, 2nd, 3rd, 之后的数字全是th结尾。
endings = ['st','nd','rd']+17*['th']\
           +['st','nd','rd']+7*['th']\
           +['st']


# 17*['th'] 的意思是后面连续跟了17个 'th' 。

year  = input ('年:')
 month = input ('月:')
 day  = input ('日:')

 month_number = int (month)
 day_number      = int (day)

 #记得将月份和天数减1,以获得正确的索引
 month_name = months[month_number-1]
 ordinal             = day + endings[day_number-1]

 print (month_name + ordinal + ',' + year)

上面是英文格式的,下面我自己写了一个中文的:
#根据给定的年月日以数字形式打印出日期
 months = [
     '1月',
     '2月',
     '3月',
     '4月',
     '5月',
     '6月',
     '7月',
     '8月',
     '9月',
     '10月',
     '11月',
     '12月'
     ]

 #以1-31的数字做结尾的列表
 endings = ['1日','2日','3日','4日','5日',
            '6日','7日','8日','9日','10日',
            '11日','12日','13日','14日','15日',
            '16日','17日','18日','19日','20日',
            '21日','22日','23日','24日','25日',
            '26日','27日','28日','29日','30日',
            '31日']

 year  = input ('年:')
 month   = input ('月:')
 day   = input ('日:')

 month_number  = int (month)
 day_number       = int (day)

 #记得将月份和天数减1,以获得正确的索引
 month_name  = months[month_number-1]
 ordinal              = endings[day_number-1]

 print (month_name + ordinal + ',' + year + '年')
6.[a:b] 分片功能,提取 第a号到第b号 之间的内容(不包含第B号的内容)
>>> number=[1,2,3,4,5,6,7,8,9,10]
 >>> number[1:8]
 [ 2, 3, 4, 5, 6, 7,8]如果索引内留空,可以向左或向右,全部显示。
>>> number[ :8]
 [1, 2, 3, 4, 5, 6, 7, 8]或者
>>> number[1: ]
 [2, 3, 4, 5, 6, 7, 8, 9, 10]或者
>>> number[ : ]
 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

注意:

从A到最后,[A: ]

从最前到B,[ :B]  (不含B)

全部显示,[ : ]


分片的步长,默认是1, [A:B:C],A是起点,B是终点(不含B),C是步长(默认值是1)。
>>> number=[1,2,3,4,5,6,7,8,9,10]
 >>> number[1:8:2]
 [2, 4, 6, 8]或者
>>> number[1:8:3]
 [2, 5, 8]注意:步长不能为0,但是可以为负数,步长为负数时,起点数应大于结束点数
[A:B:-C]  ,当C为负数时,A>B。

7.数字X乘以一个序列时会生成一个新的序列,
如果序列乘以数值X,该序列将会被重复X次。
>>> 'hello'*3
 'hellohellohello'或者
>>> [1,2]*3
 [1, 2, 1, 2, 1, 2]


8.none 表示里面什么都没有。

[0]*10表示建立10个无内容的序列。


9.序列相加可以把几个序列连接在一起,但是要注意相加的序列之间,类型必须一致,列表+列表,字符串+字符串,不能混合相加。


今天的小作业,制作一个盒子,盒子可以随着里面的文字内容而变化大小。


#以正确的宽度在居中的“盒子”内打印一个句子

 sentence=   input('请输入:')
 text_width= len(sentence)

 print('+'+'-'* text_width +'+')
 print('|'+' '* text_width +'|')
 print('|'+     sentence   +'|')
 print('|'+' '* text_width +'|')
 print('+'+'-'* text_width +'+')