将数字插入列表

时间:2013-03-03 07:06:39

标签: python python-2.7 insertion

我有一个有序的字典如下:

source =([('a',[1,2,3,4,5,6,7,11,13,17]),('b',[1,2,3,12])])

我想首先计算每个键值的长度,然后计算它的sqrt,说它是 L

L 插入可以无剩余分割的位置,并在其他数字后插入“1”。

例如,source['a'] = [1,2,3,4,5,6,7,11,13,17]的长度为9。 因此,len(source['a'])的sqrt为3。

如果数字的位置不能精确地除以3然后在其后面插入1,则将数字3插入可精确划分为3的位置(例如位置3,位置6,位置9)。

获得如下结果:

result=([('a',["1,1","2,1","3,3","4,1","5,1","6,3","7,1","11,1","13,3","10,1"]),('b',["1,1","2,2","3,1","12,2"])]

我不知道如何将列表中的项更改为字符串对。顺便说一句,这不是我的作业,我试图构建一个布尔反复引擎,源数据太大,所以我在这里创建了一个简单的示例来解释我想要实现的内容:)

1 个答案:

答案 0 :(得分:2)

由于这似乎是一项功课,我会尽力帮助你解决你所面临的问题

  

我不知道如何将列表中的项目更改为字符串对。

由于需要更新整个列表,最好重新创建它而不是更新它,尽管它可能是列表可变的

考虑一个清单

lst = [1,2,3,4,5]

将其转换为字符串列表,您可以使用列表理解

lst = [str(e) for e in lst]

您也可以使用内置map作为map(str,lst),但是您需要记住,而不是在Py3.X中,map会返回一个地图对象,因此需要相应地处理

理解中的条件最好表达为条件陈述

<TRUE-STATEMENT> if <condition> else <FALSE-STATEMENT>

要获取列表中任何项目的索引,最好的办法是使用内置的enumerate

如果您需要从一系列项目创建格式化的字符串表达式,建议使用format string specifier

"{},{}".format(a,b)

包含list的任何序列的长度都可以通过内置的len

来计算

您可以使用具有分数幂的运算符**或使用math模块并调用sqrt函数来计算平方根

现在你只需要结合上述每个建议来解决你的问题。