【发布时间】:2013-09-10 15:22:02
【问题描述】:
我有一个像这样的元组:t = ((4, 3), (2, 9), (7, 2), ...),其中每个嵌套元组中的第一个元素(即t[i][0])可以从 1 到 11 不重复,但不一定是 1 到 11 之间的每个整数现在。
我想基于t创建一个列表(或元组)r,方式如下:
结果列表 r 的长度正好是 11。对于r 中的每个索引j,如果j + 1 === t[i][0] 对应任何i,则为r[j] = t[i][1],否则为r[j] = 0。
这可以通过首先将r初始化为[0] * 11,然后循环通过t将t[i][1]分配给r[t[i][0] - 1]来完成:
t = ((4, 3), (2, 9), (7, 2), (10, 1))
r = [0] * 11
for item in t:
r[item[0] - 1] = item[1]
r = [0, 9, 0, 3, 0, 0, 2, 0, 0, 1, 0]
但是有没有更有效的方法(也许是一种功能性的方法)?
【问题讨论】:
-
"这可以通过先将 r 初始化为 [0] * 11 来完成,然后通过 t 循环将 t[i][1] 分配给 r[t[i][0]]。 "你有这方面的代码吗?请向我们展示您的尝试
-
您能否为您的示例提供预期的
rt? -
@Haidro,添加了上面的代码。
-
@arshajii,我添加了一个示例。
标签: python python-2.7