Python循环回到列表的开头

时间:2017-12-19 05:28:38

标签: python list loops

我有这个清单:

x = ['a', 'b', 'c', 'd']

我想以这种方式回忆起它中的一组项目:

z = x[1]

print y = [z, z+6, z+7]
  

[' a',' c',' d']

当然,当我这样做时,它告诉我它超出了范围。我不明白为什么它不起作用。能帮我解决这个问题吗?

1 个答案:

答案 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']

希望它可以帮助您了解代码的错误。