首页 > 其他 > 详细

No.5字典

时间:2020-03-19 10:09:49      阅读:49      评论:0      收藏:0      [点我收藏+]

No.5

今日概要

  • 字典
  • 重点

内容回顾和补充

  • int

    • py2 / py3
    • 除法
    • 强制转换:
      • int(str) 【重要】
      • int(bool)
  • bool

    • 强制转换:

      • bool(int) 只有0是False

      • bool(str) 只有空字符串是False
      • bool(list) 只有空列表是False
      • bool(tuple) 只有空元组是False

  • str

    • 独有功能:upper/lower/split/strip/replace/isdigit/stattswith/endswith/format/join/encode
    • 公共功能:
      • 长度
      • 索引
      • 切片
      • 步长
      • 遍历
      • 无删除
      • 无修改
    • 强制转换:
      • str(int)
      • str(True)
      • str([‘哇哈哈‘, ‘AD钙奶‘]) → " [‘哇哈哈‘, ‘AD钙奶‘] " 要实现拼接使用 ‘‘.join([‘哇哈哈‘, ‘AD钙奶‘])
      • str(tuple) → 同列表方法,使用‘‘.join(tuple)
  • list

    • 独有功能:append/insert/pop/remove/clear/extend
    • 公共功能:
      • 长度
      • 索引
      • 切片
      • 步长
      • 遍历
      • 删除
      • 修改
    • 强制换换:
      • list(str) 无太多意义
      • list(tuple)
  • tuple

    • 独有功能:无
    • 公共功能:
      • 长度
      • 索引
      • 切片
      • 步长
      • 遍历
      • 无删除
      • 无修改
    • 强制转换:
      • tuple(str) 无太多意义
      • tuple(list)
  • 总结

    • 常见的类型转换

      # 字符串数字互转
      
      #列表元组互转
      
      #其它转布尔值为False,只有0 "" [] ()
      习题
      nums = [11,22,33,44]
      for i in range(0,len(nums)):
          nums[i] = str(nums[i])
      result = '_'.join(nums)
      print(result)
      
      #注意''.join(字符串/容器内元素必须是字符串)

内容详细

1.字典

请表示:姓名张三 / 年龄18 / 性别男 / 爱好武术

#A同学
name = '张三'
age = 18
gender = '男'
hobby = '武术'
#B同学
data = '张三,18,男,武术'
#C同学
data_list = ['张三','18','男','武术']
请输出:他的名字叫张三,他的年龄是18岁,性别男爱好武术。
#如果用以上方式虽然可以储存信息,但当信息量成千上万时就不可取了。
info = {'name':'张三','age':18,'gender':'男','hobby':'武术'}   #键值
info['name']
inof['age']
userinfo = {'username':'alex','password':'123'}
user = input('请输入用户名:')
pwd = input('请输入密码:')

if userinfo['username'] == user and userinfo['password']== pwd:
    print('登陆成功')
else:
    print('用户名或密码错误')

字典是为了帮助用户去表示一个事物的信息(事物有多个属性),在py3.6版本之前的字典都是无序的。

  • 独有功能

    • .keys() 获取字典中所有的键。

      info = {'name':'张三','age':18,'gender':'男','hobby':'武术'}
      info.keys()   #获取所有的键
      for item in info.keys():
          print(item)
    • .values() 获取字典中所有的值。

      info = {'name':'张三','age':18,'gender':'男','hobby':'武术'}
      info.values()  #获取所有的值
      for item in info.values():
          print(item)
    • .items() 获取字典中所有的键值对。

      info = {'name':'张三','age':18,'gender':'男','hobby':'武术'}
      info.items()   #获取所有的键值对
      for v1,v2 in info.items():
          print(v1,v2)
  • 公共功能

    • len

      info = {'name':'张三','age':18,'gender':'男','hobby':'武术'}
      print(len(info))
    • 索引

      info = {'name':'张三','age':18,'gender':'男','hobby':'武术'}
      info['name']
      info['age']
    • 切片【无】

    • 步长【无】

    • for

      info = {'name':'张三','age':18,'gender':'男','hobby':'武术'}
      for i in info:
          print(info)   #循环字典本身只取键
      for item in info.keys():
          print(v1,v2)
      for item in info.values():
          print(v1,v2)
      for v1,v2 in info.items():
          print(v1,v2)
    • 修改(存在就修改,不存在就增加)

      #改值
      info = {'name':'张三','age':18,'gender':'男','hobby':'武术'}
      info['age'] = 19
      print(info)
      
      #改键
      无法直接改只能通过先删除后再添加间接改。
      del info['hobby']
      info['a'] = b
    • 删除

      info = {'name':'张三','age':18,'gender':'男','hobby':'武术'}
      del info['name']
      print(info)

2.重点

  • int
  • bool
  • str
  • list
  • tuple
  • dict

4.数据补充

循环添加

lst = [1,2,3,4,5,6]
for i in lst:
    lst.append(7)       # 这样写法就会一直持续添加7
    print(lst)

lst = [1,2,3,4,5,6]
n = 0
for i in lst:
    lst.append(7)
    print(lst)
    n += 1
    if n > 11:
        break
print(lst)

循环删除

lst = [11, 22, 33, 44]
for i in lst:
    lst.remove(i)
print(lst)
结果:
[22, 44]
#分析原因: for的运行过程中会有一个指针来记录当前循环的元素是哪一个, 一开始这个指针指向第0个,然后获取到第0个元素,紧接着删除第0个元素;这个时候原来的第一个元素会自动的变成第0个,然后指针向后移动一次指向第1个元素。这时原来的1已经变成了0, 也就不会被删除了。
lst = [11, 22, 33, 44]
for i in range(0,len(lst)):
    del lst[i]
print(lst)
结果:
报错
#分析原因:当i=2的时候,列表只剩[22,44],但是这个时候删除的是lst[2],肯定报错啊。
lst = [11, 22, 33, 44]
for i in lst:
    lst.pop()
print(lst)
结果:
[11, 22]
#分析原因:当i=lst[2]的时候,列表只剩[11,22],表示循环结束。
  • 经过分析发现,用remove、del、pop都无法实现循环删除。
#结合range和pop成功完成
lst = [11, 22, 33, 44]
for i in range(len(lst)): 
    lst.pop()
print(lst)
#用另一个列表来记录你要删除的内容,然后实现循环删除
lst = [11, 22, 33, 44]
lst2 = []
for i in lst:
    lst2.append(i)
print(lst2)
for i in lst2:
    lst.remove(i)
print(lst)
  • 由于删除元素会导致元素的索引改变,所以容易出现问题。尽量不要在循环中直接去删除元素。可以把要删除的元素添加到另一个列表中然后再批量删除。

No.5字典

原文:https://www.cnblogs.com/elliottwave/p/12521783.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!