如何仅将列表的一部分复制到另一个列表。例如,如果列表的长度为105,但只需将30个随机选择的元素复制到新列表中。 这是我写的代码
for x in range (104):
if len(trainingSet1)>30:
break
trainingSet1[x]= (trainingSet[random.randint(1,103)])
但它一直给出这个错误:
Traceback (most recent call last):
File "Q1_2.py", line 82, in <module>
main()
File "Q1_2.py", line 72, in main
trainingSet1[x]= (trainingSet[random.randint(1,103)])
IndexError: list index out of range
答案 0 :(得分:1)
错误可能在这里:
trainingSet1[x] = ...
除非您已填充trainingSet1
,否则您正尝试分配给trainingSet1.append(...)
一个尚不存在的元素。使用if (pat1[r][c]!=' ' || pat2[r][c]!=' ') {
pat1[r][c] == pat2[r][c];
}
代替。
答案 1 :(得分:1)
将trainingSet1初始化为trainingSet1 =[]
,然后尝试将值附加到该值而不是使用trainingSet1[x] = value
。如果您真的想像在代码中那样分配,可以先将数组初始化为trainingSet1 = [0] * 30
。这将为列表分配30 0&#39;稍后将替换为您随机选择的值。