python - 尝试在 python2 中创建有限的数字序列:IndexError(初学者)
问题描述
编辑:现在解决了最初的问题,看问题的底部;我还有一个问题。
我有一个列表,s2
它的第一个元素 ( s[0]
) 是长度为的数字列表n
(由用户输入定义),其元素也由用户定义。我想要做的是创建 n-1 个数字序列作为s2
. 这些序列中的每一个都是由前一个序列中的顺序元素的减法组成。(右元素 - 左元素)所以第二个序列的长度是 n-1,第三个:n-2 ...并且第 n 个序列的长度(s2[n-1]
's)是 1。
for j in range(1, n):
for k in range(0,n-j):
s2[j].append(s2[j-1][k+1] - s2[j-1][k])
但我收到此错误:
Traceback (most recent call last):
File "[path]", line 9, in <module>
s2[j].append(s2[j-1][k+1] - s2[j-1][k])
IndexError: list index out of range
你能帮我调试一下吗?
编辑:
n = int(raw_input())
s = raw_input()
s1 = [int(i) for i in s.split(" ")]
s2 = []
s2.append(s1)
for j in range(1, n):
for k in range(0,n-j):
s2[j].append(s2[j-1][k+1] - s2[j-1][k])
示例输入:
4
1 2 3 4
ps:你能建议我另一种方法来比这更快地获得第 n 个吗?而不是创建所有这些列表?(即使 n 很大,我也希望它花费不到 1 秒)
解决方案
您需要s2
在尝试使用每个元素之前对其进行初始化。否则python怎么知道它是什么类型?
for j in range(1, n):
s2.append(list())
for k in range(0, n-j):
s2[j].append(s2[j-1][k+1] - s2[j-1][k])
推荐阅读
- php - 如何在 Laravel 上同步调度队列作业
- java - Mailchimp API 发布成员批量操作
- c# - C# MySQL 等待超时
- java - 当前 maven 会话包含被禁止的插件存储库 url,请仔细检查您的 pom 或 settings.xml
- symfony - 来自关系的 Gedmo Slug 作为后缀
- python - 在 django 中调用 save 时如何停止创建新文件?
- javascript - 打字稿 - 错误:
确实存在于类型'{property:Type; }' | 错误',属性 在“错误”类型上不存在 - r - R-Survey 中的变量编码 - 对名义变量进行排名
- python - ValueError:操作数无法与形状 (11,) (10,) 与分位数回归一起广播
- c# - .NET Core 中 DES 的弱键