今天学习第二章,关于列表和元组。
1.序列有6种,如下:
集合是既不包含序列,也不包含映射的容器类型。
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 +'+')