gpt4 book ai didi

Python 重复列表

转载 作者:行者123 更新时间:2023-11-30 23:23:25 24 4
gpt4 key购买 nike

首先,这是我的代码:

row_1 = [3]
row_2 = [7, 4]
row_3 = [2, 4, 6]
row_4 = [8, 5, 9, 3]

for element in row_3:
key = row_3.index(element)
row_3[key] = element + max(row_4[key], row_4[key + 1])

for element in row_2:
key = row_2.index(element)
row_2[key] = element + max(row_3[key], row_3[key + 1])

for element in row_1:
key = row_1.index(element)
row_1[key] = element + max(row_2[key], row_2[key + 1])

print(row_1)

到目前为止,这段代码是有效的。正如您可能注意到的,有相当多的重复,我想知道如何压缩它。理想情况下,我想要类似的东西

for element in row_x:
key = row_x.index(element)
row_x[key] = element + max(row_(x+1)[key], row_(x+1)[key + 1])

我知道这是完全错误的,但这只是我的想法。我将非常感谢所有的见解。

哦,顺便说一下,这段代码最大化了金字塔中两个相邻数字的总和(参见此处:http://projecteuler.net/problem=18)

最佳答案

这就是你所说的翻译(消除循环重复):

l = [[3],
[7, 4],
[2, 4, 6],
[8, 5, 9, 3]]

for row in range(len(l)-2, -1, -1)
for key, element in enumerate(l[row]):
l[row][key] = element + max(l[row+1][key], l[row+1][key+1])

print(l[0][0])

您的错误是将三角形存储在单独的数据结构上,只需使用嵌套列表并对其进行迭代即可。

此外,如果在迭代可迭代对象时同时需要元素和索引,请使用 enumerate 函数。

<小时/>
  • 由于range(start, end, step)start迭代到end(不包括end) ,step 是增量,range(range(len(l)-2, -1, -1) 迭代,如“len(l)-2 -> len(l)-3 -> ... -> 1 -> 0”。请注意,我们想要0 被包含在内,所以我们传递 -1 作为参数。对于 range 函数和切片来说,一个好的助记符是“你传递您想要的第一个参数,以及您不想要的第一个参数”。
  • 此外,正如 @user2357112 所说,元组打包-解包是 Python 的一个非常好的功能。基本上,当赋值的 RHS 是可迭代时,您可以在 LHS 上使用元组,并且元素将被相应地分配。您可以省略括号,并且还有更多语法糖:

喜欢:

In [1]: a, b, *c, d = range(5)

In [2]: a, b, d
Out[2]: (0, 1, 4)

In [3]: c
Out[3]: [2, 3]

您也可以在循环中使用解包:

In [1]: l = ["enumerate", "is", "a", "nice", "builtin"]

In [2]: list(enumerate(l))
Out[2]: [(0, 'enumerate'), (1, 'is'), (2, 'a'), (3, 'nice'), (4, 'builtin')]

In [3]: for i, v in enumerate(l):
...: print(i, "->", v)
...:
0 -> enumerate
1 -> is
2 -> a
3 -> nice
4 -> builtin

关于Python 重复列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23974740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com