您在向我们展示的代码中弄乱了一些东西。让我们仔细看看这里发生了什么。
z = x[1]
在这行代码中,您从位于索引1 的数组x 中分配一个值。在这种情况下,这意味着将'b' 分配给变量z(数组从0 开始索引)。
print y = [z, z+6, z+7]
这里有无效的语法。首先,您不能将值分配给变量的结果打印到控制台。其次,您不能在一个数组中存储两种不同的类型。你的情况
[z, z+6, z+7]
相当于:
['b', 'b'+6, 'b'+7]
Python 不明白您所说的 'b'+6 是什么意思 - 这个表达式不正确,因为您根本无法将 6 添加到字符串中。根据你的预期输出,我猜你期待的是这样的:
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']
希望它能帮助您了解您的代码出了什么问题。