python 列表、元祖和字典

 一:列表循环
names=['哈哈','嘿嘿']
while(False):...
i=0#元素下标
while i<len(names):
  print(names[i])
  i+=1 #i=i+1
如图:

for 循环做法
1.
for i in range(len(names)):
  print(names[i])
2.
for i in names:
    print(i)
"1,2,5,7"#是 以split(",")来分割,返回值 是列表且数据类型为整数类型
eval()将元组、字典、列表类型的字符串  转换  为元组、字典、列表 没有标识默认为元组
可以把list,,tuple,dict,和string互相转换。
即:list:将元组转换为列表 tuple:将列表转换为元组 dict:字典 string:字符串
r = '23,5,6'
r1 = eval(r)
print(r1[0])
print(type(r1[0]))
print(type(r1))
如图:

将字符串字典转换成字典
r = "{'a':1,'b':2}"
r1=eval(r)
print(r)
print(type(r1))
如图:

#将元组转换str
r = (1,2,3)
r1 = str(r)
print(r)
print(type(r1))
  二:元祖
python中:元组和列表相似,不同的是:元组的元素不可以修改。
元组使用小括号,列表使用方括号。
创建一个元组:

1.
num = (1,2,3,4)
print(num)
2.
t = (1,2,'hah',[5,5,8],'你好')
print(t)
print(len(t))
print(dir(t))
即:在创建的时候  不可改变
试一下:
t.__add__(55)
print(t)
即:显示说 只可以调用 不能改变

可变和,不可变
1.可变
a = 1
b = 1
print(id(1))#即 id:打印内存地址
print(id(a))
print(id(b))
id一样如图:

2.不可变

t = (1,2,'hah',4,[5,5,8],'你好')
print(t[1])
# t[4]=3#即:错误的
# 正确的:
t[4][1] = 3
如图:

#如果想要改变t里面下标为1的值:

t[1][0] = 3#系统报错
print(t)
即:不可改变就是,t里面的下标值不可改变
如果下标为’值中值‘如:[5,5,8] 则只可改变中括号里面的值
增加 删除 改变均不可以

逐个赋值 一一对应 即:有多少个变量 就声明多少个值

t=(1,2,'haha')
a,b,c=t
print(a,b,c,)
查看是否是元组
a = (88,)
print('a:',a)
print('a:',type(a))#即:a里面 不加逗号为数字  加上为元组
访问 使用切片
for i in range(len(t)):
    print(t[i])
for i in t:
    print(i)
print(t[::-1])
加法
t1=t*3
print(t1)
t2=t1+t
print(t2)
乘法
t=(1,2,3,4,5,10,8)
t1=t*3
print(t1)
print(max(t))#最大的值
print(min(t))#最小的值
如图:

tuple:将列表转换为元组
#创建一个元组 格式的数据格式 内容就是小括号里面的
tu=tuple([1,2,3,4,5])
print(tu)
tu1=(tu[:])
print(tu1)
元组完
三:字典
字典是一种 可变容器模型,且可储存任意类型的对象。
每个键值用(:)分割 键必须是唯一的,但值则不必。

d = {key1:value1,key2:value2}
值可以取任何数据类型,但键必须是不可变的如:字符串、数字、元组。
一般用字符串

stus={'小明':18,'小红':20}
dit={'爱好':['吃','美食']}
通过key 进行操作
stus['老王']=20
stus['老王']=25
#覆盖 即:如果第一个stus存在 那就是覆盖,不存在就是添加
print(stus)
删除
del stus['老王'] #即:如果没有键值 系统抛异常
当要删除的key 不存在时  系统不会抛异常 会显示‘没有此函数’
ret=stus.pop('老王','没有此函数')
print(ret) #返回‘老王’的 值 即:ret 返回被删除的值
stus={'小明':18,'小红':20}
使用【 .get:获取 】的好处
print('小明年龄:',stus.get('小明','不存在'))
即:如果没有’小明‘则显示’不存在‘系统不会抛异常
print('小红年龄:',stus['小红5'])
即:如果没有’小红5‘系统抛异常

知识延伸

phones={'110':'小明','119':'火警','911':'火警'}

print('****************************************')
while(True):
  print('========通讯录管理系统========')
  print('1.增加姓名和手机号')
  print('2.删除行姓名')
  print('3.修改手机')
  print('4.查询所有用户')
  print('5.根据姓名查找手机号')
  print('6.退出')
  print('======================================')
  i=int(input('请选择:'))
  if(i==1):
    name=input('请输入姓名:')
    phone=input('请输入电话号码:')
    while phone in phones:
      phone=input('电话已存在,请重新输入电话:')
    phones[phone]=name
    print('录入成功')
  elif i==2:
    name = input('请输入姓名:')
    for item in phones.items():
        if item[1].__eq__(name):
            phones.pop(item[0])
            print('删除成功')
            break
    else:
        print('名字不存在')
  elif i==4:
    for key in phones.keys():
        print('电话:',key+'姓名'+phones.get(key))
    print('输出完毕')
  elif i==3:
    phone = input('请输入电话号:')
    if phone in phones.keys():
        new_phone = input("请输入新的电话号:")
        while new_phone in phones.keys():
            new_phone = input('电话已存在,请重新输入:')
        name=phones.pop(phone)
        phones[new_phone]=name
        print('更新成功')
    else:
        print('电话不存在')
  elif i == 5:
    name = input('请输入姓名:')
    for item in phones.items():
        if item[1].__eq__(name):
            print('姓名:'+item[1]+'电话'+ item[2])
    else:
            print('名字不存在')
  elif i==6:
    print('谢谢使用')
    break

 字典遍历 len(d):
phones={'110':'小明','119':'火警','911':'火警'}
print(len(phones))
遍历key:
for key in phones.keys():
    print(key)
遍历value:
for value in phones.values():
    print(value)
for item in phones.items():
    print(item[0],item[1])
如图(红色区域):
     
字典特性:

1.不能出现相同的key,如果出现 即:后一个覆盖前一个
2.key的值是不可变的,所以可以用数字,字符串和元组充当,不能用列表
字典和列表的区别:
1.字典:
  优点:
查找和插入的速度极快,不会随着key的增加而变慢;
  缺点:
需要占用大量的内存,内存浪费多。
2.列表:
  缺点:
查找和插入的时间随着元素的增加而增加
  优点:
占用空间小,浪费内存很少。
字典是支持无线嵌套的:
citys = {
    '北京':{
        '朝阳':['三里屯','五元桥'],
        '海淀':['首都师大','花园桥']
    },
    '河北':{
        '张家口':['251','第一附属医院'],
        '宣化':['建国街','南大街']
    }
}
for city in citys.keys():
    print(city)
    for qu in citys.get(city).keys():
        print('\t'+qu)
        print('\t\t'+str(citys.get(city).get(qu)))
如图:

将一个列表的数据复制到另一个列表中:

num = {'哈哈':15,'啦啦':17}
dox = num.copy()
print(dox)
print(type(dox))
如图:

# 转类型:

print(str(dox))
print(type(str(dox)))

字典的内置函数:
len()#获取长度
str()#转译成字符串
type()#获取数据类型

clear()#清空
copy()#复制 ’值‘
key()  value() item()

pop(key)#删除一个值,如果没有key 则抛异常即:pop(key,default)不抛异常
get()#添加

嘿嘿没了!

猜你喜欢

转载自blog.csdn.net/angelayouran/article/details/80248086