04列表和元组

# -*- coding: utf-8 -*-
#===============================================================================
#第四章 列表和元组

'''
目录
4.1 定义序列
4.2 序列的基本操作
4.2.1 通过索引操作序列元素
4.2.2 分片
4.2.3 序列相加
4.2.4 序列的乘法
4.2.5 检查某个值是否属于一个序列
4.2.6 序列的长度、最大值和最小值
4.3 列表的基本操作
4.4 列表方法
4.5 元组
'''

#4.1定义序列

#===============================================================================
# 一个序列可以是同一种类型或者不同类型,称为元素,也可以每个元素单独都是一个序列
#===============================================================================
'''
#测试
values=["Bill",12,13.1,True]
names=["Bill","HeHe","Mary"]
numbers=[1,2,3,4,5,6]
salary=[3000.00,2500.00,9000.00]
flags=[True,False,True,True]
values2=[values,names,numbers,salary,flags]
for value in values2:
print(value)
'''


#4.2序列的基本操作

#===============================================================================
# 4.2.1通过索引操作序列元素
# 通过索引获取序列的某个元素,字符串的某个字符,控制台输入的某个字符,从0开始
# 索引为正数,则从左边开始数,负数则从右边开始数,从 -1 开始
# 索引超出范围就会报错
#===============================================================================
'''
#测试
months=["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]
year=input("请输入年份:")
month=input("请输入月份(1--12):")
day=input("请输入日期(1--31):")
month=months[int(month)-1]
print("今天是:"+year+"年"+month+day+"日")
'''

#===============================================================================
# 4.2.2分片
# 从序列A中取出一个序列B,则A是B的父序列。需要开始索引和结束索引
# 如序列A[a,b,c,d,e,f,g,h,i,j,k],A[3:9]就是序列B[d,e,f,g,h,i],取出的序列就是从索引3到索引8的序列,索引9的是不会取出的
# 如果要一起取出索引结尾的序列,则需要索引+1,或者省略结束索引
# 开始索引如果比结束索引要晚,则会获取一个空序列
# 胜率开始索引则会从0开始
# 分片还可以设置步长,如A[a,b,c,d,e,f,g,h,i,j,k],A[3:9:2]就是序列B[d,f,h]
# 步长是负数时,会从序列右边开始,此时开始索引要晚与结束索引
#===============================================================================
'''
#测试
url=input("请输入一个https网址:")
scheme=url[:5]
host=url[8:]
print("scheme:"+scheme)
print("host:"+host)
a=int(input("请输入一个整数:"))
numbers=range(1,a)
numbers1=numbers[::2]
numbers2=numbers[1::2]
for number in numbers1:
print(number,end=" ")
print(" ")
for number in numbers2:
print(" ",number,end="")
'''


#===============================================================================
# 4.2.3序列相加
# 序列可以相加,但是要相同类型的序列
#===============================================================================

#===============================================================================
# 4.2.4序列的乘法
# 序列可以相乘,如序列*n,会生成一个新序列,会将原序列的元素重复n次
# 如A[1,2]*3,结果是A[1,1,1,2,2,2]
#===============================================================================

#===============================================================================
# 4.2.5检查某个值是否属于一个序列
# 可以用in判断,如str="I Love you",,"you" in str 的结果就是True
#===============================================================================
'''
#测试
account=[["A","a"],["B","b"],]
names=input("用户名:")
passwords=input("密码:")
if [names,passwords] in account:
print("登录成功")
else:
print("登录失败")
'''


#===============================================================================
# 4.2.6序列的长度、最大值和最小值
# 内建函数len、max和min可以得到(元素的数量)、(序列中的最大值)和(序列中的最小值)
# max和min使用时,序列中的元素值必须是可以比较的
#===============================================================================
'''
#测试
values=[10,40,5,76,33,2,-12]
print(len(values))
print(max(values))
print(min(values))
print(max(4,3,2,5))
print(min(6,5,4))
'''


#4.3列表的基本操作

#===============================================================================
# 1.列表元素赋值:s=[1,2,3],,,s[0]=5,,,得出s=[5,2,3]
# 2.删除列表元素:s=[1,2,3],,,del s[0],,,得出s=[2,3]
# 3.分片赋值:s=[1,2,3,6],,, s[1:]=[9,5],,,得出s=[1, 9, 5]
#===============================================================================
'''
#测试
names=list("Mike")
names[1:]=list("aak")
print(names)
s=[1,5,6]
s[1:1]=[2,3,4]
print(s)
s[1:4]=[]#不包含结束索引
print(s)
'''


#4.4列表方法

#===============================================================================
# 对象 . 方法(参数)
# append:在列表结尾插入新的值
# clear:清楚列表的内容
# copy:复制一个列表
# count:统计某个元素在列表中出现的个数
# extend:在列表结尾插入新列表
# index:从列表中找出某个值的第一次匹配项
# insert:将值插入到列表的指定位置
# pop:移除列表中的元素(默认最后一个),并返回该元素的值
# remove:移除列表中某个值得第一次匹配项
# reverse:将列表中的元素反向存放
# sort:用于对列表进行排序
#===============================================================================
'''
#测试
s=[1,2,3,4]
s.append(3)
print(s)#[1,2,3,4,3]
n1=s.copy()#产生s列表的副列表,副列表修改不会影响父列表
n1[1]=9
print(s)#[1,2,3,4,3]
n2=s#指向同一个列表,任何一个列表改变,另外一个都会改变
n2[1]=9
print(s)#[1,9,3,4,3]
s.clear()
print(s)#[ ]
s=n1
print(s)#[1,9,3,4,3]
print(s.count(3))
k=[5,1]
s.extend(k)
print(s)#[1,9,3,4,3,5,1]
print(s+k)#[1,9,3,4,3,5,1,5,1],,,,效率低,不建议使用
s[len(s):]=k
print(s)#[1,9,3,4,3,5,1,5,1]
s.insert(1, 8)
print(s)
s[1:1]=[6]
print(s)
s=[1,2,3,4,2]
print(s.pop(2))
print(s)
s.remove(2)
print(s)
s.reverse()
print(s)
s.sort()#这样操作会修改列表,一般都是先生成副列表,再操作
print(s)
s=[1,5,4,2]
n=sorted(s)#这样可以直接生成升序的副列表
print(s)
print(n)
#sorted()可以对任何序列进行排序,比如字符串
print(sorted("1asdrgas"))
s.sort(reverse=True)#对s进行降序排列
print(s)
'''


#===============================================================================
# 4.5元组
# 元组也是序列,但是它无法被更改,只能被读取
# 写法: a=1,2,3, b=(1,2,3),,,只有一个元素的元组写法:c=3,
# 可以用函数suple将序列转化为元组:tuple([1,2,3])
#===============================================================================
'''
#测试
a=1,2,3
b=2,
print(a)
print(b)
print(5*(12+4,))
print(5*(12+4))
print(tuple([1,2,3,4,5]))
print(tuple("good lucky"))
'''


'''
#练习题
#1.在控制获取输入多个数字,直到end退出,将获取的数字放入序列中,对该序列进行降序,然后输出
a=[]
while True:
s=input('请输入一个整数(退出请输入end):')
if s=="end":
break
s=int(s)
a.append(s)
a.sort(reverse=True)
print(a)
#2.序列a和序列b,将a中索引1到3的元素值追加到b结尾,对b进行升序,然后输出b
a=[1,2,3,4,5,6]
b=[3,2,4,5,6,7]
c=a[1:4]
for d in c:
b.append(d)
print(b)
#3.获取列表中的最大值,不允许升降序
a=[1,5,4,2,8,5,2]
b=a[0]
i=1
while i<len(a):
if a[i-1]<a[i]:
b=a[i]
i+=1
print(b)
#4.从控制台输入>1的整数n,产生一个二维列表,尺寸是n*n,每一个列表的元素值都从1到n*n,依次排序
# 如输入3,则结果是:
# [1,2,3]
# [4,5,6]
# [7,8,9]
# 然后会互换行列值,结果是:
# [1,4,7]
# [2,5,8]
# [3,6,9]
n=int(input("请输入一个大于1的整数:"))
a=range(1,n*n+1)
i=1
e=[]
while i<=n:
x=n*(i-1)
y=n*i
b=a[x:y]
d=[]
for c in b:
d.append(c)
e.append(d)
print(d)
i+=1
print(e)
i=0
l=[]
while i<n:
k=[]
for m in e:
k.append(m[i])
l.append(k)
print(k)
i+=1
print(l)
'''

猜你喜欢

转载自www.cnblogs.com/zengsen666/p/12093391.html