Python 映射 list

Python 的强大特性之一是其对 list 的解析,它提供一种紧凑的方法,可以通过对 list 中的每个元素应用一个函数,从而将一个 list 映射为另一个 list。


1. List 解析介绍

>>> li = [1, 9, 8, 4]
>>> [elem*2 for elem in li]      (1)
[2, 18, 16, 8]
>>> li                           (2)
[1, 9, 8, 4]
>>> li = [elem*2 for elem in li] (3)
>>> li
[2, 18, 16, 8]

(1)  为了便于理解它,让我们从右向左看。li 是一个将要映射的 list。Python 循环遍历 li 中的每个元素。对每个元素均执行如下操作:首先临时将其值赋给变量 elem,然后 Python 应用函数 elem*2 进行计算,最后将计算结果追加到要返回的 list 中。
(2)  需要注意是,对 list 的解析并不改变原始的 list。
(3)  将一个 list 的解析结果赋值给对其映射的变量是安全的。不用担心存在竞争情况或任何古怪事情的发生。Python 会在内存中创建新的 list,当对 list 的解析完成时,Python 将结果赋给变量。


让我们回过头来看看位于 第 2 章 的函数 buildConnectionString 对 list 的解析:

["%s=%s" % (k, v) for k, v in params.items()]

首先,注意到你调用了 dictionary params 的 items 函数。这个函数返回一个 dictionary 中所有数据的 tuple 的 list。


2. keys, values  和  items  函数

>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
>>> params.keys()   (1)
['server', 'uid', 'database', 'pwd']
>>> params.values() (2)
['mpilgrim', 'sa', 'master', 'secret']
>>> params.items()  (3)
[('server', 'mpilgrim'), ('uid', 'sa'), ('database', 'master'), ('pwd', 'secret')]

(1)  Dictionary 的 keys 方法返回一个包含所有键的 list。这个 list 没按 dictionary 定义的顺序输出 (记住,元素在 dictionary 中是无序的),但它是一个 list。
(2)  values 方法返回一个包含所有值的 list。它同 keys 方法返回的 list 输出顺序相同,所以对于所有的 n,params.values()[n] == params[params.keys()[n]] 。
(3)  items 方法返回一个由形如 (key,value) 组成的 tuple 的 list。这个 list 包括 dictionary 中所有的数据。
现在让我们看一看 buildConnectionString 做了些什么。它接收一个 list,params.items(),通过对每个元素应用字符串格式化将其映射为一个新 list。这个新 list 将与 params.items() 一一对应:新 list 中的每个元素都是 dictionary params 中的一个键-值对构成的的字符串。


3.  buildConnectionString  中的  list 解析

>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
>>> params.items()
[('server', 'mpilgrim'), ('uid', 'sa'), ('database', 'master'), ('pwd', 'secret')]
>>> [k for k, v in params.items()]                (1)
['server', 'uid', 'database', 'pwd']
>>> [v for k, v in params.items()]                (2)
['mpilgrim', 'sa', 'master', 'secret']
>>> ["%s=%s" % (k, v) for k, v in params.items()] (3)
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']

(1)  请注意我们正在使用两个变量对 list params.items() 进行遍历。这是多变量赋值的另一种用法。params.items() 的第一个元素是 ('server', 'mpilgrim'),所以在 list 解析的第一次遍历中,k 将为 'server',v 将为 'mpilgrim'。在本例中,我们忽略了返回 list 中 v 的值,而只包含了 k 的值,所以这个 list 解析最后等于 params.keys()。
(2)  这里我们做着相同的事情,但是忽略了 k 的值,所以这个 list 解析最后等于 params.values()。
(3)  用一些简单的 字符串格式化将前面两个例子合并起来 ,我们就得到一个包括了 dictionary 中每个元素的 key-value 对的 list。这个看上去有点像程序的输出结果,剩下的就只是将这个 list 中的元素接起来形成一个字符串了。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
混沌映射在计算机科学中是一种用数学方程表达的随机性系统。这里我们选取了Logistic映射作为例子,给出了混沌映射的定义和计算程序的Python实现。 在这个程序中,首先我们定义了一个Logistic函数,它用于计算混沌映射的迭代值。然后我们定义了一个LE_calculate函数,用于计算混沌映射的Lyapunov指数(LE)。LE是用来描述混沌系统的敏感性和可预测性的指标。 在LE_calculate函数中,我们首先定义了一些初始变量,包括混沌的初始值a,迭代次数n,以及用于求导和求和的变量。然后我们定义了一个Logistic方程的表达式和其对应的导数表达式。接下来,我们使用循环进行迭代计算,每次迭代更新混沌的值,并计算当前导数值的绝对值的对数,并将其累加到求和值中。最后,我们将求和值除以迭代次数得到Lyapunov指数LE的值。 如果你想在Python中实现混沌映射,你可以使用这个给出的程序作为例子进行参考和学习。记得在代码中导入所需的库,比如sympy库,以及定义所需的函数和变量。然后按照程序中的步骤进行计算和迭代即可。 希望这个回答能帮助到你理解混沌映射的概念和Python实现。如果你还有其他问题,请随时提问。<span class="em">1</span> #### 引用[.reference_title] - *1* [一维离散混沌映射Lyapunov指数的计算](https://blog.csdn.net/u014593570/article/details/80440839)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值