python学习第三课
·元组 ·列表 ·字典
文章目录
元组
·元素的有序列。 ·元组的每个素可以是任意类型 ·元组使用小括号
#元组定义
tup0=()
tup1=('physics','chemistry',1997,2000)
tup2=(1,2,3,4,5)
tup="a","b","c","d"
print(tup)
#元组访问
tuple=('hello',100,4.5)
print(tuple[0])
print(tuple[1])
print(tuple[2])
#元组的索引、组合、切片
t1=(1,'two',3)
t2=(t1,3.25)
print(t2)
print(t1+t2)
print((t1+t2)[3])
print((t1+t2)[2:5])
注意: 元组不可以进行修改,但可以进行连接组合
#元组的遍历
a_tuple=(1,2,3,4,5)
for num in a_tuple:
print(num,end='')
元组内置函数
#函数示例
t1=('1','two','3')
print(len(t1))
列表
·列表也是值的有序,可以存储不同类型数据。
似元组用逗号 分隔不同数据项,使用方括号起来。 ·
列表是可变的
#列表创建
Techs = ['MIT', 'Caltech']
print(Techs)
Techs.append('tax')
print(Techs)
#append 它不创建一个新列表 ,而是通过向Techs Techs 的末尾添加一个新元素改变这个已有的 列表
列表append、extend函数的差别
append保持原来结构不变,extend直接扩展
L1 = [1,2,3 ]
L2 =[4,5,6 ]
L3 = L1 + L2
print ('L3=',L3)
L1.extend(L2)
print('L1=',L1)
L1.append(L2)
print ('L1 =',L1)
#列表索引同元组一样
A=[1,2,3]
print(A[0])
#循环遍历
#for循环遍历
vist=['hello',123,'200']
for var in vist:
print(var)
#while循环遍历
length=len(vist)
i=0
while i<length:
print(vist[i])
i+=1
一项注意
当列表正在遍历行进时,改变列表会变换索引,因此可以用切片代替(L1[:]) 列表的拷贝可用方法来实现
def clone(a):
acopy=a[:]
return acopy
a=[1,2,3]
b=clone(a)
print(b)
练习1
假设L1和L2是列表,删除L1中出现在L2中的元素
L1=[1,2,34,5]
L2=[1,2]
for i in L2:
if i in L2 :
L1.remove(i)
print(L1)
列表常见操作汇总
#将其他格式的数据转化为列表
word='hello'
name=list(word)
print(name)
#列表元素赋值
list=[1,2,3]
list[0]=2
print(list)
#切片
list=[1,2,3]
print(list[:2])#从索引为0字符到索引为1的字符(2-1)
#列表修改
vist=list(range(6))
print(vist)
vist[0:1]=[20,30,40,50]
print(vist)
#整体插入
list1=[1,2,3]
list1.insert(0,2)
print(list1)
#列表删除
#列表删除有三种方法,del,pop,remove
list1=[1,2,3,4,5]
del list1[2]#删除索引下标为2的值
print(list1)
list1.pop()
print(list1)
list1.remove(2)
print(list1)
#列表的排序及反转
list2=[1,2,67,0,9]
list2.sort()
print(list2)
list2.reverse()
print(list2)
字典
字典是一种存储数据的容器,它和列表一样,都可以存储多个数据。 其由“键”和“值”所组成,其中键是唯一的
info = {'name':'班长', 'id':100, 'sex':'male', 'address':'北京'}
print(info['name'])
print(info['address'])
# 列出所有的键
monthNumbers = {'Jan':1, 'Feb':2, 'Mar':3, 'Apr':4, 'May':5, 1:'Jan', 2:'Feb', 3:'Mar',
4:'Apr', 5:'May'}
keys = [] #空列表,或keys=list()
for e in monthNumbers:
keys.append(str(e))
print(keys)
keys.sort()
print(keys)
字典常用方法
get:如果我们不确定字典中是否存在某个键而又想获取其值时,可以使用 get方法,还可以设置默认值。
info = {'name':'班长', 'id':100, 'sex':'female', 'address':'北京'}
age = info.get('age')
print(age) #‘age’键不存在,所以age为None
print(type(age))
age = info.get('age', 18) # 若info不存在‘age’,返回默认值18
print(age)
除字典元素:
del:用于删除字典;删除后,字典完全不存在了,无 法再根据键访问字典的值。
clear:只是清空字典中的数据,字典还存在,只不过 没有元素。
del info
print(info)
info.clear()
print(info)
输出结果为空
计算字典中键值对的个数
dict = {'Name': 'Zara', 'Age': 7}
print("Length : %d" % len (dict))
获取字典中键的列表 keys()方法返回在字典中的所有可用的键的列表。
dict = {'Name': 'Zara', 'Age': 7};
print(dict.keys())
. 获取字典中值的列表 values()方法返回在字典中的所有可用的值的列表
dict = {'Name': 'Zara', 'Age': 7};
print(dict.values())
. 计算字典中键值对的个数 items()方法返回字典的(键,值)元组对的列表
dict = {'Name': 'Zara', 'Age': 7}
print("Value : %s" % dict.items())
总结与练习
利用循环创建一个包含100个偶数的列表,并且计算该列表的和与平均值,请分别使用while和for循环实现,采用文件输出结果
import random
import numpy as np
list1=[]
i=0
while i<100:
a=random.randint(0,1000)
if a%2==0:
list1.append(a)
i+=1
else:
continue
print("用while循环制造出来的列表是",list1)
s=sum(list1)
print('列表的和是',s)
m=np.mean(list1)
print('列表的均值是',m)
list2=[]
i=1
for i in range(0,100):
a=random.randint(0,1000)
if a%2==0:
list2.append(a)
i+=1
else:
continue
print("用for循环制造出来的列表是",list1)
s2=sum(list2)
print('列表的和是',s2)
m2=np.mean(list2)
print('列表的均值是',m2)
编写两个函数:假设L是列表,f是函数,f(e)应用到L的每个元素,并用返回值替换原来的元素,其中f(e)分别定义为阶乘和斐波拉契数 什么是斐波那契数列,1,1,2,3,5,8,13…这样一个数列就是斐波那契数列,求第n项的值。
def fib(n):
if n==1:
return 1
elif n==2:
return 1
else:
return fib(n-1)+fib(n-2)
def jiecheng(n):
if n==1:
return 1
else:
return n*jiecheng(n-1)
jiecheng(fib(5))
编写程序,运用列表或字典完成通讯录的基本功能
people={'骆俊邦':'13567890987','金廷宾':'13567890987','陆金俊':'13890876789'};
print("|---欢迎进入通讯录程序---|")
print("功能如下:")
print("|---1:增加姓名和手机号码---|")
print("|---2: 删除姓名---|")
print("|---3: 修改手机号码")
print("|---4:查询所有用户---|")
print("|---5:根据姓名查找手机号---|")
print("|---6: 退出---|")
while True:
num=int(input("请输入你想输入的指令"))
if num==1:
print("欢迎进入增加姓名和手机号页面")
name=input("请输入你想增加通讯人的姓名")
if name in people:
print("该用户姓名已存在",name,':',people[name])
continue
else:
haoma=input("请输入该用户的通讯号码")
people[name]=haoma
continue
if num==2:
print("欢迎进入删除页面")
name=input("请输入你想删除通讯人的姓名")
if name not in people:
print("该用户不在通讯录里,请重新输入")
continue
else:
del people[name]
continue
if num==3:
print("欢迎进入修改手机号页面")
name=input("请输入你想要修改手机号的姓名")
if name not in people:
print("该用户不在,请重新输入")
continue
else :
phone=input("请输入你想改成的手机号码")
people[name]=phone
if num==4:
print("欢迎进入查询所有用户界面目前通讯录中的所有联系人为:")
print(people.items())
continue
if num==5:
print("欢迎进入通讯录查找页面")
name=input("请输入你要查找的对象")
if name not in people:
print("不存在该用户!")
else:
print("该用户的联系方式是",people[name])
if num==6:
print("欢迎使用")
break