无法理解为什么这个Python FOR循环没有按预期工作

时间:2015-11-10 12:53:02

标签: python python-2.7 for-loop

我试图生成一个随机数据集来绘制Python 2.7中的图形。

其中' y' list存储了100到135之间的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]

2 个答案:

答案 0 :(得分:1)

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

运行代码,这里有一个示例select regexp_replace('abcde(737)sbsgs37(6)s(v)', '(\()(\d+)(\))', '\1''\2''\3') from dual

y

110分别是10和13. 105分别是2和9.Python停止查找它找到第一个,因此[127, 124, 105, 119, 121, 118, 130, 123, 122, 105, 110, 109, 108, 110] 变为:

x

答案 1 :(得分:0)

list.index()list中找到该对象的第一个出现的索引,这会产生list重复元素时看到的结果。 [1, 1, 1].index(1)之类的内容会生成0

如果要生成索引列表,可以使用list(range(len(y))),找到y的长度,从中创建一个range()对象,然后创建一个{{ 1}}出于那个对象。由于您使用的是Python 2,因此您可以省略list调用,因为Python 2 list()已经返回range()