第四章 序列

4.1 定义序列

       同一个序列,不仅可以包含相同数据类型值,还可以包含不同数据类型的值。

name = ['uuu','fff','ooo']
print(name)
name = ['uuu','fff','ooo',123,123.456,False]
print(name)

       序列的元素如果是另外一个序列,那么就相当于一个二维或多维数组。

# 由于子序列长度不一,所整体是锯齿形状的序列
names = ["Bill", "Mike"]
numbers = [1,2,3,4,5,6]
salary=[3000.0,4000.0,5000.0]
flags = [True,False,True,True]
values = [names,numbers,salary,flags,['a','b']]
for value in values:
    print(value)

4.2 序列的基本操作

4.2.1 通过索引操作序列元素

       序列中的所有元素都是有编号的,编号都是从0开始递增,访问序列中的所有元素可以访问编号,这个编号被称为索引。

names = ["Bill", "Mary", "Jack"]
print(names[0])            # 运行结果:Bill
print(names[2])            # 运行结果:Jack 

       字符串也可以通过索引获取特定的字符。

s = "Hello World"
print(s[0])                	# 运行结果:H
print(s[3])                	# 运行结果:l
print("Apple"[2])        	# 运行结果:p  

       input函数输入的字符串也可以通过索引引用某个字符。

# 可以获取年份的最后一个字符
fourth = input('请输入年份:')[3]
print(fourth)

       序列的索引如果是0或正整数,从左侧开始生成索引。如果是负数,从右侧开始生成索引,右侧第1个索引为-1,右侧第2个为-2,以此类推。

names = ["Bill", "Mary", "Jack"]
print(names[0])                		#  运行结果:Bill
print(names[-1])                	#  运行结果:Jack
print(names[-2])                	#  运行结果:Mary 

       当索引超出序列的索引范围时,(注意:会抛出异常,后边的语句将不会执行了)。注意,得到序列的分片边界元素,可以允许超过1位边界。

names = ["Bill", "Mary", "Jack"]
print(names[4])          	#  索引超出names序列的范围,将导致抛出异常
print(names[-4])        	#  索引超出names序列的范围,将导致抛出异常

       示例:输入年份将月份显示为中文月份。

# 将中文月份放到序列中
months = [
    '一月',
    '二月',
    '三月',
    '四月',
    '五月',
    '六月',
    '七月',
    '八月',
    '九月',
    '十月',
    '十一月',
    '十二月'
    ]
year = input("年:")            	# 输入年
month = input('月(1-12):')   	    # 输入月
day = input('日(1-31):')     	    # 输入日

monthNumber = int(month)      	    # 将字符串形式的月转换为数值形式的月

monthName = months[monthNumber - 1]            			# 从序列中获取中文的月份
print(year + "年 " + monthName + " " + day + "日")  	# 按指定格式输入年月日

4.2.2 分片

       分片操作就是从序列A中获取一个子序列B,则序列A为父序列。获取子序列B时需要在A序列中指定开始和结束的索引。

       父序列索引方式1:0,1,2, … , n-1                # 左闭右开
       父序列索引方式2:-n,-(n-1), … , -2, -1        # 左闭右开

# 索引的生成两种方向(左右),索引的选取[左闭右开] ,子索引边界(取反或省略(或+1))  

url = 'https://geekori.com'

print(url[8:15])     	# 运行结果:geekori
print(url[8:-1])     	# 不能获取最后一个元素
print(url[8:18])   	    # 不能获取最后一个元素
print(url[8:0])      	# 不能获取最后一个元素,会得到一个空序列[]
print(url[8:19])     	#  运行结果:geekori.com ,19为父索引超范围边界,获取最后一个元素
print(url[8:])        	# 获取最后一个元素

print(url[-3:-2])               	# 负索引
print(url[-3:-1])               	# 不能获取最后一个元素
print(url[-3:18])               	# 不能获取最后一个元素
print(url[-3:0])                	# 不能获取最后一个元素,会得到一个空序列[]
print(url[-3:19])               	# 获取最后一个元素
print(url[-3:])                 	# 获取最后一个元素
    
print(url[:5])                  	# 获取前5个元素
print(url[5:])                  	# 获取前6个元素之后的所有元素
print(url[:-5])                 	# 获取后5个元素之前的所有元素
print(url[-5:])                 	# 获取后5个元素
print(url[:])                   	# 复制整个父序列

       设置步长为0,会抛出异常。默认步长为1,可以设置第三个参数改变默认步长。正步长从左到右选择输出元素,负步长从右到左选择输出元素。

url = 'https://geekori.com'
# 正步长从左到右选择输出
print(url[8:15:2])                
print(url[8:-1:2])              
print(url[8:18:2])              
print(url[8:0:2])                   
print(url[8:19:2])                
print(url[8::2])                    

print(url[:5:2])                    
print(url[5::2])                    
print(url[:-5:2])                   
print(url[-5::2])                   
print(url[::2])                 

# 负步长从右到左选择输出
print(url[-3:-2:-2])                
print(url[-3:-1:-2])                
print(url[-3:18:-2])                
print(url[-3:0:-2])             
print(url[-3:19:-2])                
print(url[-3::-2])                  

print(url[:5:-2])                   
print(url[5::-2])                   
print(url[:-5:-2])                  
print(url[-5::-2])                  
print(url[::-2])            

       示例:两行错位显示1-n中的奇数和偶数

url = input("请输入一个Https网址:")
scheme = url[0:5]                  	    #  分片获取Url中的Scheme
host = url[8:]                       	#  分片获取Url中的Host

print("scheme:", scheme)
print("host:",host) 

str = input("请输入一个整数:")
n = int(str);

numbers = range(1,n)      				# 产生包含1到n的数值类型的序列(有序的)
numbers1 = numbers[0::2]   				# 分片获取序列中的奇数,值与索引恰好奇偶相反
numbers2 = numbers[1::2]   				# 分片获取序列中的偶数,值与索引恰好奇偶相反

for number in numbers1:         		# 在第1行输出所有的奇数
    print(number, end= " ")
print("")                         		# 换行
print(" ",end="")						# 错位
for number in numbers2:          		# 在第2行错位输出所有的偶数
    print(number, end= " ") 

4.2.3 序列相加

       序列的相加并不是序列的元素值相加,而是序列的首尾相接。字符串属于字符序列,所以字符串相加也可以看做序列相加。但一个字符串不能和一个序列相加,否则会抛出异常。

print([1,2,3]+[4,5,6])      	# 1,2,3,4,5,6
print("hello" + "world")    	# helloworld
print(["hello"] + [1,2,3])  	# hello,1,2,3
print("hello" + [1,2,3])    	# 字符串不能与序列相加,抛出异常

4.2.4 序列相乘

       如果用一个数字n乘以一个序列将会产生一个新的序列,新的序列将会被重复n次。

print("ufo " * 5)   	# ufo ufo ufo ufo ufo
print([20] * 5)     	# 20,20,20,20,20
print([None] * 5)   	# None,None,None,None,None

       用序列生成一个二维序列,由空格和星号元素组成,星号将会拼接成一个正三角型。

spaceNum = 5
i = 1
lineSpaceNum =spaceNum   	# 表示当前行的前后空格数
triangle = []            	# 二维列表
# 开始生产三角形
while lineSpaceNum >= 0:
    # 生成星号左侧空格列表
    leftSpaceList = [' '] * lineSpaceNum
    # 生成星号列表
    starList = ['*'] * (2 * i - 1)
    # 生成星号右侧空格列表
    rightSpaceList = [' '] * lineSpaceNum
    # 生成每一行的列表
    lineList = leftSpaceList + starList + rightSpaceList
    triangle.append(lineList)
    lineSpaceNum -= 1
    i += 1
for line in triangle:
print(line)

4.2.5 检查某个值是否属于一个序列

       为了检查某个值是否属于一个序列,可以使用in运算符。如果属于返回True,否则返回False。

str = 'I love you'
print("you" in str)
print("hello" in str)
names = ["AA","BB","CC"]
print("AA" in names)
print("DD" in names)

       验证用户是否登录成功。

account = [                        		# 保存了多条用户记录的序列
    ["geekori", "123456"],
    ["bill", "54321"],
    ["superman", "65432"],
    ["androidguy","6543"],
    ["mike435", "65abcd"]
]

username = input("用户名:")     	    # 要求输入用户名
password = input("密码:")              # 要求输入密码


# 用in运算符判断一个序列是否属于account
if [username, password] in account:
    print("登录成功")
else:
    print("登录失败")

4.2.6 序列的长度、最大值和最小值

       len函数可以测得序列的长度,max函数和min函数可以测得元素的最大值和最小值。如果序列中的值不可比较将会抛出异常,例如,同时存在字符串和数值。

s = ["Bill", "Mike", "John"]
s[-1] = "Mary"             	 	#  修改列表最后一个元素值
print(s)                    	#  运行结果:['Bill', 'Mike', 'Mary']   
s[3] = "Peter"            		#  索引3超出了列表s的索引范围(-3到2),会抛出异常
s[-3] = "蜘蛛侠"            		#  索引-3是列表s的第1个元素,相当于s[0]
print(s)                    	#  运行结果:['蜘蛛侠', 'Mike', 'Mary']
s[-4] = "钢铁侠"          		# 索引-4超出了列表s的索引范围(-3到2),会抛出异常
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值