问题

使用给定的整数n,编写程序以生成包含(i,i * i)的字典,该字典为1到n之间的整数(都包括在内)。然后程序应打印字典。

假设输入:8
然后,输出应为:{1:1、2:4、3:9、4:16、5:25、6:36、7:49、8:64}

提示:
如果将输入数据提供给问题,则应假定它是控制台输入。
考虑使用dict()

我所编写的程序

def zidian(n):     #由于第二例我直接用的for循环跟原答案比太低端了,而且我认为应该锻炼一下运用函数的能力,所以我使用了函数l = {}      #创建一个空字典for i in range(n):   #利用for循环为字典添加键值对l[i+1] = (i+1)*(i+1)return l         #直接返回值到调用的地方
n = int(input('请输入数字:'))
print(zidian(n))

原问题答案

n=int(raw_input())
d=dict()
for i in range(1,n+1):d[i]=i*i
print d

在这里用到了dict()函数,dict()函数是用来创建字典的,那么具体的用法是什么呢?

语法:dict(key/value)
key/value – 用于创建字典的键/值对,此处可以表示键/值对的方法有很多,具体可参考下方示例。

eg:

dict0 = dict()  # 传一个空字典
print('dict0:', dict0)
输出:dict0: {}
dict1 = dict({'three': 3, 'four': 4})  # 传入一个字典
print('dict1:', dict1)
输出:dict1: {'four': 4, 'three': 3}
dict2 = dict(five=5, six=6)  # 传入键值对,并生成字典
print('dict2:', dict2)
输出:dict2: {'five': 5, 'six': 6}
dict3 = dict([('seven', 7), ('eight', 8)])  # 传入一个包含一个或多个元祖的列表,每个元组内包含一个两个元素,并生成键值对,返回一个字典
print('dict3:', dict3)
输出:dict3: {'seven': 7, 'eight': 8}
dict5 = dict(zip(['eleven', 'twelve'], [11, 12]))  # 传入一个zip()函数,并生成字典
print('dict5:', dict5)
输出:dict5: {'twelve': 12, 'eleven': 11}

在这个例子中还提到了zip()函数,那zip()函数又是什么呢?

zip()函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。

eg:

x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = zip(x, y, z)
print xyz    #从结果可以看到,zip()是取每个列表的相同角标的元素组成元组
输出结果为:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]x = [1, 2, 3]
y = [4, 5, 6, 7]
xy = zip(x, y)
print xy    #在组成元组的时候,若列表长度不同,则按照最短的列表为限,长的列表多余的部分直接舍弃
输出结果为:[(1, 4), (2, 5), (3, 6)]x = [1, 2, 3]
x = zip(x)
print x   #即便只有一个列表也会按照元组去重组,所以zip()函数的本质就是把拿到的列表组成元组放在一个列表内
输出结果为:[(1,), (2,), (3,)]x = zip()
print x   #产生了一个空列表
输出结果为:[]x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = zip(x, y, z)
u = zip(*xyz)
print u
输出结果为:[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
一般认为这是一个unzip的过程,它的运行机制是这样的:
在运行zip(*xyz)之前,xyz的值是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
那么,zip(*xyz) 等价于 zip((1, 4, 7), (2, 5, 8), (3, 6, 9))
所以,运行结果是:[(1, 2, 3), (4, 5, 6), (7, 8, 9)],python中的*号 删除可以看这里
注:在函数调用中使用*list/tuple的方式表示将list/tuple分开,作为位置参数传递给对应函数(前提是对应函数支持不定个数的位置参数)
*用于参数前面,表示传入的多个参数将按照元组的形式存储,是一个元组x = [1, 2, 3]
r = zip(* [x] * 3)
print r
输出结果为:[(1, 1, 1), (2, 2, 2), (3, 3, 3)]
它的运行机制是这样的:
[x]生成一个列表的列表,它只有一个元素x
[x] * 3生成一个列表的列表,它有3个元素,[x, x, x]
zip(* [x] * 3)的意思就明确了,zip(x, x, x)

持续更新中,如果存在哪些问题,希望大家能及时指出,我一定会及时修改!

python百例练习之第三例-字典dict()相关推荐

  1. python集合set底层原理_Python进阶11_字典dict和集合set的秘密

    本节你将看到关于字典dict和集合set更加深入的原理,尤其是关于散列在其中的作用,将回答以下问题:Python 里的 dict 和 set 的效率有多高? 为什么它们是无序的? 为什么并不是所有的 ...

  2. 基于Python读取Excel表格文件数据并转换为字典dict格式

      有时我们需要将一个Excel表格文件中的全部或一部分数据导入到Python并转换为字典格式,如何实现呢?   我们以如下所示的一个表格(.xlsx格式)作为简单的示例.其中,表格共有两列,第一列为 ...

  3. python精彩编程200例 pdf-Python创意编程200例turtle篇

    简 介: Python是一种高阶计算机语言.它更接近自然语言,学习成本低,开发效率高.如今越来越多的中小学生都在开始学习Python了.我们可以预见,全民会Python的日子不久就会到来,各行各业的人 ...

  4. Python网络爬虫与信息提取笔记08-实例2:淘宝商品比价定向爬虫

    Python网络爬虫与信息提取笔记01-Requests库入门 Python网络爬虫与信息提取笔记02-网络爬虫之"盗亦有道" Python网络爬虫与信息提取笔记03-Reques ...

  5. 机器人中的数值优化|【二】最速下降法,可行牛顿法的python实现,以Rosenbrock function为例

    机器人中的数值优化|[二]最优化方法:最速下降法,可行牛顿法的python实现,以Rosenbrock function为例 在上一节中提到了我们详细探讨了数值优化/最优化理论中的基本概念和性质,现在 ...

  6. 信息学奥赛一本通 2053:【例3.3】三个数

    [题目链接] ybt 2053:[例3.3]三个数 [题目考点] 1. if语句嵌套 2. if-else if语句 [解题思路] if语句嵌套 如果a>=b,那么再判断b,c的大小: 如果b& ...

  7. 信息学奥赛一本通(2053:【例3.3】三个数)

    2053:[例3.3]三个数 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 2835     通过数: 1080 [题目描述] 输入三个整数,按从大到小的顺序输出 ...

  8. 职高计算机word教学视频,职高计算机专业Word范例教学三例.doc

    职高计算机专业Word范例教学三例 职高计算机专业Word范例教学三例目前,大部分职高计算机专业的学生的通病是:动手能力弱,接受新知识的能力弱,无法"学会学习".学生进入职高之后, ...

  9. 电脑故障扫描修复软件_非常时期不出门,自己在家修电脑,三例常见电脑故障排除方法。...

    这段时间还是尽量少出门好,防控疫情最有效的方法就是宅在家.那么电脑坏了怎么办呢,且看下面故障现像及解决方法,说不定能帮到你呢! 故障现像 一:开机直接进BIOS画面的 这是其中一种主板的BIOS画面, ...

  10. 通信维修专用电源_通信电源的故障维修三例

    通信电源的故障维修三例 引黄济青工程王褥泵站通信及 自动化 系统 的 电源是 由通信 电源设 备提 供的 , 其工作正常与否直接影响到通信系统的畅通及 自动化系统的正常运行 . 魏信峨 孟 篙岩 李希 ...

最新文章

  1. golang中的defer
  2. mybatis 中SQLServer 和 mysql 模糊查询 不同点
  3. macos docker 安装mysql,mac 中docker安装mysql的图文教程
  4. 第九周 10.25-10.31
  5. 【Linux】Linux按tab键补全文件(名)或路径不区分大小写
  6. Memcached实战之单机部署----单实例/多实例
  7. android调试+及JNI相关
  8. flask mysql sql注入_Python 中如何防止sql注入
  9. 关于安装QCAT/QXDM异常的问题
  10. DM8达梦数据库:sql查询达梦数据库实例的详情
  11. nps是什么、怎么计算、有什么用
  12. html常用长度度量单位,度量长度的单位是什么 毫米以下的五个计量单位分别是什么?...
  13. CSDN 博客专家申请入口
  14. 花菁染料Cy3.5 炔烃,Cy3.5 alkyne储存条件及光谱特性解析
  15. 农历2017年8月初4_2017年8月25日
  16. talib实现与通达信、同花顺一致的MACD、KDJ指标
  17. YOLO v5 引入解耦头部
  18. FI和HR集成自动记账-薪酬计提与发放过账-OBYE/OBYG/PE03/OH02
  19. 【ICCV2019】probabilistic face embeddings 概率人脸嵌入
  20. 分享:阿里巴巴离职DBA 35岁总结的职业生涯

热门文章

  1. [机器学习必知必会]泛化误差率的偏差-方差分解
  2. 大力出奇迹----旅行背包
  3. SM2证书的鉴定方法
  4. c语言工具栏运行不见了,电脑下面的任务栏不见了怎么办 几种方法介绍
  5. Java 计算月份天数
  6. linux51单片机烧录程序,单片机成长之路(51基础篇) - 006 在Linux下搭建51单片机的开发烧写环境...
  7. 美国佛罗里达州立大学刘毅老师招收机器学习方向全奖博士生
  8. win10系统IIS服务器配置详细教程,win10系统配置iis的操作方法
  9. 检查计算机新的更新失败,原神PC启动器检查更新失败怎么办?PC客户端报错解决方法...
  10. 现场总线---can总线