我有这个清单:
x = ['a', 'b', 'c', 'd']
我想以这种方式回忆起它中的一组项目:
z = x[1]
print y = [z, z+6, z+7]
[' a',' c',' d']
当然,当我这样做时,它告诉我它超出了范围。我不明白为什么它不起作用。能帮我解决这个问题吗?
答案 0 :(得分:0)
你在向我们展示的代码中搞砸了一些东西。让我们仔细看看这里发生的事情。
z = x[1]
在这行代码中,您可以在索引x
处为数组1
分配一个值。在这种情况下,它意味着将'b'
分配给变量z
(数组从0
开始编制索引。)
print y = [z, z+6, z+7]
这里你的语法无效。首先,您无法打印到控制台为变量赋值的结果。其次,您不能在一个数组中存储两种不同的类型。在你的情况下
[z, z+6, z+7]
相当于:
['b', 'b'+6, 'b'+7]
Python不理解'b'+6
的含义 - 这个表达式不正确,因为你根本无法将6
添加到String中。根据你的预期输出,我猜你期待这样的事情:
y = [z, x[6 % len(x)], x[7 % len(x)]]
现在让我们逐步解释这段代码。首先让我们用它的实际值替换z
变量:
y = ['b', x[6 % len(x)], x[7 % len(x)]]
然后让len(x)
替换为实际值:
y = ['b', x[6 % 4], x[7 % 4]]
然后让我们评估模运算:
y = ['b', x[2], x[3]]
最后,让我们将x[2]
和x[3]
替换为实际值:
y = ['b', 'c', 'd']
当然,在这种情况下,数组y
以'b'
作为第一个元素开头。这是因为我们已将x[1]
分配给z
变量。要获得'a'
,我们当然必须z = x[0]
。
x = ['a', 'b', 'c', 'd']
z = x[0]
y = [z, x[6 % len(x)], x[7 % len(x)]]
print y
['a', 'c', 'd']
希望它可以帮助您了解代码的错误。