我已经创建了一个列表
a=[1,2,3,4,5]*100
我现在需要创建另一个列表,其中将包含a
中的前8个素数位置。
我尝试了这两行代码,但是它们没有起作用
b=a[2:3:5:7:11:13:17:19]
a[2:3:5:7:11:13:17:19]=b
列表A的输出为“ [1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5 ,1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5 ,1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5 ,1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5 ,1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5 ,1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5 ,1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5 ,1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5 ,1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5 ,1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5 ,1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5 ,1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5 ,1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5 ,1、2、3、4 ,5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4 ,5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4 ,5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4 ,5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4 ,5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4 ,5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4 ,5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4、5、1、2、3、4 ,5]“,因此其在输出中的位置为2,3,5,7,11,13,17,19
答案 0 :(得分:2)
a=[1,2,3,4,5]*100
indices = [2,3,5,7,11,13,17,19]
b = []
for i in indices:
b.append(a[i])
print(b)
您必须分别访问每个元素。 b=a[2:3:5:7:11:13:17:19]
在Python中语法上无效。实际上,这不是访问特定索引处的元素的方法。
使用List Comprehension进行相同操作的Pythonic方法(它将减少代码长度):
indices = [2,3,5,7,11,13,17,19]
b = [a[i] for i in indices]
答案 1 :(得分:0)
我会使用列表理解来尝试这种方式(请注意,test_prime方法根本没有优化):
def test_prime(n):
if (n==1):
return False
elif (n==2):
return True;
else:
for x in range(2,n):
if(n % x==0):
return False
return True
a=[1,2,3,4,5]*100
b = [item for item in range(len(a)) if test_prime(a[item])]
b = b[0:8]
print b
其中输出(注的Python从0计数,所以阵列的第一个元素是0,并且不是1):
[1, 2, 4, 6, 7, 9, 11, 12]