python学习笔记(4)序列及索引的运用

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


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 +'+')

 







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值