一、元组:

  1、定义:

  

    内存图:

    

  2、基本操作

    

  3、元组作用:

  

  4、元组基础知识代码

  

# . 创建空元组
t01 = ()
t02 = tuple() # . 创建具有默认值的元组
t01 = (,,)
t01 = tuple("abcd")
t01 = (,,[,])
print(t01) # 修改
# t01[] = 元组元素不能修改,报错
t01[][] = # 修改的是元素第三个元素(列表)的元素. # . 获取元素(索引 / 切片)
print(t01[:]) # 获取元组所有元素
for item in t01:
print(item) # 倒序获取元组所有元素
for i in range(len(t01)-, -,-):
print(t01[i]) t02 = ("a","b")
l02 = ["a","b"] t03 = t02
l03 = l02 t02 += ("c","d") # 创建了新元组对象,改变了t02存储的地址.
l02 += ["c","d"] # 将["c","d"]追加到原列表中. print(t02) # ('a', 'b', 'c', 'd')
print(t03) # ('a', 'b')
print(l03) # ['a', 'b', 'c', 'd'] # 如果元组只有一个元素,必须多写一个逗号,否则视为普通对象,不是元组对象.
t04 = (,)
print(t04)

  5、实例:

    (1)根据月份,计算天数

    

# month = int(input("请输入月份:"))
# if month < 1 or month > 12:
# print("输入有误")
# elif month == 2:
# print("28天")
# # elif month == 4 or month == 6 or month == 9 or month == 11:
# elif month in (4,6,9,11):
# print("30天")
# else:
# print("31天") month = int(input("请输入月份:"))
if month < 1 or month > 12:
print("输入有误")
else:
# 将每月的天数,存入元组.
day_of_month = (31,28,31,30,31,30,31,31,30,31,30,31)
print(day_of_month[month - 1])

    (2)在控制台中输入月,日,计算这是一年的第几天。例如输入3月5日,计算天数为?

    

#方法一
# month = int(input("请输入月份:"))
# day = int(input("请输入天:"))
# day_of_month = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
# result = 0
# # 累加前几个月
# for i in range(month - 1):
# result += day_of_month[i]
# # 累加当月
# result += day
# print(result) #方法二
month = int(input("请输入月份:"))
day = int(input("请输入天:"))
day_of_month = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
# 累加前几个月
result = sum(day_of_month[:month - 1])
# 累加当月
result += day
print(result)

二、字典:

  1、定义

    

      内存图:

      

  2、基本操作:

    

  3、字典推导式

    

  4、字典VS列表

    

  5、字典基础代码

    

# 创建空字典
d01 = {}
d02 = dict() d01 = {"a":"A","b":"B"}
# d01 = dict("ab") # 分不清key value
d01 = dict([(1,2),(3,4)]) # {1: 2, 3: 4} # 第一次增加
d01["c"] = "C"
# 第二次修改
d01["c"] = "CC" # 读取元素(如果不存在则异常)
# 建议:在字典中读取元素,先判断存在,在进行读取.
if "d" in d01:
print(d01["d"]) print(d01)
# 删除
del d01["c"]
print(d01) # 获取字典中所有元素:
for key in d01:
print(key)
print(d01[key]) # 获取字典中所有记录(元组)
for item in d01.items():
print(item[0]) # key
print(item[1]) # value for k,v in d01.items():
print(k) # key
print(v) # value # 获取所有键
for k in d01.keys():
print(k) # 获取所有值
for v in d01.values():
print(v)

  6、实例:

    (1)在控制台中录入一个字符串,打印这个字符串中的字符以及各字符出现的次数

      

str_input = input("请输入一个字符串:")
# key: 字符 value:次数
result = {}
# (1)逐一判断字符,出现的次数.
for item in str_input:
# (2)如果没有统计过该字符串
if item not in result:
result[item] = 1
else:
# (3)否则,次数增加
# result[item] = result[item] + 1
result[item] += 1 print(result)

    (2)给定一个列表["张三丰","无忌","赵敏"] ,以字典的形式输出键为列表元素,值为列表元素长度,形如:{"张三丰":3,"无忌":2,"赵敏",2}

      

#方法一
list01 = ["张三丰", "无忌", "赵敏"]
dict01 = {}
for item in list01:
dict01[item] = len(item) #方法二
dic02 = {item: len(item) for item in list01}
print(dic02)

    (3)# 练习:
       ["张三丰", "无忌", "赵敏"]
       [101, 102, 103]
        (1) 根据两个列表形成一个字典:key姓名,value房间号
        (2) 将字典的键与值进行翻转.即:key房间号,value姓名

        

list01 = ["张三丰", "无忌", "赵敏"]
list02 = [101, 102, 102]
# 循环方式
# dict01 = {}
# for i in range(len(list01)):
# dict01[list01[i]] = list02[i] # 字典推导式
dic02 = {list01[i]: list02[i] for i in range(len(list01))}
print(dic02) # 循环方式(值不重复)
# dic03 = {}
# for key,value in dic02.items():
# dic03[value] = key # 字典推导式(值重复)
# {101: '张三丰', 102: '赵敏'} 张无忌与赵敏同居,导致key重复,无忌被覆盖.
dic03 = {value: key for key, value in dic02.items()}
print(dic03) #[(102, '无忌'), (101, '张三丰'), (102, '赵敏')],即值重复时,用列表推导式
list03 = [(value,key) for key, value in dic02.items()]
print(list03)

    (4)练习4:在控制台中录入5个学生信息(姓名/年龄/性别)

      

# 4. 在控制台中录入5个学生信息(姓名/年龄/性别)
# 数据结构:列表中嵌套字典
# [
# {
# "name":xx,
# "age":xx,
# "sex":xx,
# },
# {
# "name":xx,
# "age":xx,
# "sex":xx,
# }
# .......
# ] list_student_info = []
for i in range(2):
# 每次循环创建一个新字典表示一个新学生
dict_student = {}
dict_student["name"] = input("请输入姓名:")
dict_student["age"] = int(input("请输入年龄:"))
dict_student["sex"] = input("请输入性别:")
# 向学生列表追加学生信息
list_student_info.append(dict_student) # 获取所有学生信息
for dict_stu in list_student_info:
for key,value in dict_stu.items():
print("%s -- %s"%(key,value))

    (5)练习5:猜拳,规则:系统随机出拳,在控制台中循环猜测.

    

"""
 猜拳
规则:系统随机出拳,在控制台中循环猜测.
提示:(1)将胜利的策略存入容器
(
("石头","剪刀"),
("剪刀","布"),
("布","石头")
)
(2) 将用户猜的拳与系统出拳形成一个元组
""" import random # 胜利策略
wins = (
("石头", "剪刀"),
("剪刀", "布"),
("布", "石头")
)
# 将用户猜的拳与系统出拳形成一个元组
user_input_index = int(input("请输入整数(0表示石头,1表示剪刀,2表示布):"))
items = ("石头","剪刀","布")
user_input_item = items[user_input_index] sys_input_index = random.randint(0,2)
sys_input_item = items[sys_input_index] # 逻辑处理
if user_input_item == sys_input_item:
print("平局")
elif (user_input_item,sys_input_item) in wins:
print("赢啦")
else:
print("输啦")

Python基础之元组和字典的更多相关文章

  1. python基础深入(元组、字符串、列表、字典)

    python基础深入(元组.字符串.列表.字典) 一.列表 1.追加 >>>list = [1,2,3,4] #用于在列表末尾添加新的对象,只能单个添加,该方法无返回值,但是会修改原 ...

  2. Python列表、元组、字典和字符串的常用函数

    Python列表.元组.字典和字符串的常用函数 一.列表方法 1.ls.extend(object) 向列表ls中插入object中的每个元素,object可以是字符串,元组和列表(字符串“abc”中 ...

  3. python基础一数据类型之字典

    摘要: python基础一数据类型之一字典,这篇主要讲字典. 1,定义字典 2,字典的基础知识 3,字典的方法 1,定义字典 1,定义1个空字典 dict1 = {} 2,定义字典 dict1 = d ...

  4. python基础数据类型--元组(tuple)

    python基础数据类型--元组(tuple) 一.元组的定义和特性 定义:与列表相似,只不过就是将[ ] 改成 ( ) 特性:1.可以存放多个值 2.不可变 3.按照从左到右的顺序定义元组元素,下标 ...

  5. Day2 - Python基础2 列表、字典、集合

    Python之路,Day2 - Python基础2   本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一, ...

  6. python基础之列表、字典、元祖等 (二)

    一.作用域 if 1==1: name = 'weibinf' print name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 result = 值1 ...

  7. Python基础:映射(字典)

    一.概述 映射类型(Mapping Types)是一种关联式的容器类型,它存储了对象与对象之间的映射关系. 字典(dict)是Python中唯一的映射类型,它是存储了一个个 键值对(由 键 映射到 值 ...

  8. python数据类型之元组、字典、集合

    python数据类型元组.字典.集合 元组 python的元组与列表类似,不同的是元组是不可变的数据类型.元组使用小括号,列表使用方括号.当元组里只有一个元素是必须要加逗号: >>> ...

  9. Python基础之元组

    元组初识 元组的认识 首先,我们来认识一下元组: # 定义一个元组 uesr_tuple = ("zhangsan", "lisi", "wangwu ...

随机推荐

  1. [物理学与PDEs]第2章第2节 粘性流体力学方程组 2.6 一维粘性热传导流体动力学方程组

    一维粘性热传导流体动力学方程组: $$\beex \bea \cfrac{\p\rho}{\p t}+\cfrac{\p }{\p x}(\rho u)&=0,\\ \cfrac{\p u}{ ...

  2. pycharm实用快捷键集锦

    以下是本人需要记录的快捷键,并不针对大众,所以是断断续续补充的,大家看看图个乐呵就成! 生成代码块(Surround with):Ctrl + Alt + t . 历史浏览页面跳转:很多时候,我们需要 ...

  3. 移动端click事件300ms延迟

    移动端click 事件延迟300ms 一般情况下,如果没有经过特殊处理,移动端浏览器在派发点击事件的时候,通常会出现300ms左右的延迟.也就是说,当我们点击页面的时候移动端浏览器并不是立即作出反应, ...

  4. spring的纯注解的IOC配置

    package config; import com.mchange.v2.c3p0.ComboPooledDataSource;import org.apache.commons.dbutils.Q ...

  5. Centos-6服务器源配置(使用阿里云的源镜像)

    首先在VM中安装从 https://mirrors.aliyun.com/centos/ 中下载好的centos镜像(这里以centos6.9 64 为例). 安装完成后先要进行备份  mv /etc ...

  6. xheditor编辑器上传图片

    之前在用csdn的时候,觉得他们家的编辑器挺好用,精美,简洁,大方,功能强大.最近自己的项目也要用到编辑器,我就想起了xheditor. 好多大网站都用到它~好棒! 我把xheditor用于文章模块, ...

  7. NB-IoT不一定最完美 但足以成为决定ofo与摩拜物联网胜负的关键【转】

    转自:http://news.rfidworld.com.cn/2017_11/3d5ed5c5d8cb9949.html 2018年到来之前,如果还不懂物联网,你会被淘汰. 今年1月,工信部< ...

  8. 第一章 Bootstrap简介

    一.Bootstrap简介 Bootstrap是基于 HTML.CSS.JAVASCRIPT 的前端框架,它简洁灵活,使得 Web 开发更加快捷.它由Twitter的设计师Mark Otto和Jaco ...

  9. orm总结

    x先谈谈java方面的. mybatis优点是基本啥都有了,sql统一管理,只需接口就可以了,缺点是对于复杂语句的执行还是麻烦,一般还是在程序里解决,自带的动态sql功能较弱不说,重点是调式时还是麻烦 ...

  10. Images corrections preview with lensfun 不同型号镜头预览图 828张 合集

    lensfun 目前支持900多种镜头, 但是网上并没有预览图; 闲暇时间做了800多张预览图合集 下载地址 链接: https://pan.baidu.com/s/1crfhoKKZKnxntvNH ...