2015-11-10 75 views
0

我想要生成一个随机数据集来绘制Python 2.7中的图形。无法理解为什么这个Python FOR循环不能按预期工作

在其100和135之间的“Y”列表存储14个整数我这样做,用下面的代码:

y = [random.randint(100, 135) for i in xrange(14)] 

并为“X”名单,我想存储的索引值'y'中的元素。要做到这一点,我尝试使用代码:

x = [] 

for i in y: 

    pt = y.index(i) 

    x.append(pt) 

但是当我运行此,for循环的结果呢:

x = [0, 1, 1, 3, 4, 5, 6, 3, 1, 9, 1, 11, 12, 13] 

为什么不是结果下面?

x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] 
+1

因为'y'有重复。 – interjay

回答

0

list.index()发现在list第一发生该对象的,其产生您看见当list已经重复的元素的结果的索引。类似[1, 1, 1].index(1)会产生0

如果要生成的索引列表,你可以使用list(range(len(y))),其中发现的y长度,创建一个range()对象出来,然后创建一个list指出的对象。由于您使用的是Python 2,因此您可以省略list()调用,因为Python 2的range()已经返回list

+0

非常感谢!这就解释了为什么,以及如何以正确的方式解决问题。干杯。 – Reddy

1

Python正在返回第一个位置的值在y中。

运行代码,这里是一个例子y

[127, 124, 105, 119, 121, 118, 130, 123, 122, 105, 110, 109, 108, 110] 

110是在两端10和13 105是在两个2和9的Python停止查找找到的第一个之后,所以x然后变成:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 2, 10, 11, 12, 10] 
相关问题