2017-06-06 91 views
-4

我想只乘以列表(0-100)上的每个第二个数字,但我无法使其工作。仅使用列表的第N个元素进行操作

+1

的可能的复制[我如何循环通过两个Python列表?](https://stackoverflow.com/questions/2990121/how-do-i-loop-through-a-python-list-by-twos) – asongtoruin

+0

请澄清。你是否想把所有这些数字相乘在一起,你是否想用特定数字乘以每个数字并存储结果或其他?数字是否在给定列表中乘以“1”,“3”等或第2,第4等项目?另外,你有什么尝试? –

+0

我想改成这样的列表:1,2,3,4,5,6,7,8变成1,4,3,8,5,16等 –

回答

0
[x*10 for x in range(100) if x%2==0] # take vale to be multiply instead of 10, use x if you want to multiply with number it self 

以下的代码只是增加偶数元素而保持原样。

def iterate_lis(get_list): 
    ls = [] 
    for x in get_list: 
     if x%2==0: 
      ls.append(x*2) 
     else: 
      ls.append(x) 
    print(ls) 
    return ls 

iterate_count = 5 # list will be iterate 5 times 

for i in range(iterate_count): 
    if i ==0: 
     get_lis = iterate_lis(range(100)) 
    else: 
     get_lis = iterate_lis(get_lis) 

结果为iterate_count=5将是如下:

>>> 
[0, 1, 4, 3, 8, 5, 12, 7, 16, 9, 20, 11, 24, 13, 28, 15, 32, 17, 36, 19, 40, 21, 44, 23, 48, 25, 52, 27, 56, 29, 60, 31, 64, 33, 68, 35, 72, 37, 76, 39, 80, 41, 84, 43, 88, 45, 92, 47, 96, 49, 100, 51, 104, 53, 108, 55, 112, 57, 116, 59, 120, 61, 124, 63, 128, 65, 132, 67, 136, 69, 140, 71, 144, 73, 148, 75, 152, 77, 156, 79, 160, 81, 164, 83, 168, 85, 172, 87, 176, 89, 180, 91, 184, 93, 188, 95, 192, 97, 196, 99] 
[0, 1, 8, 3, 16, 5, 24, 7, 32, 9, 40, 11, 48, 13, 56, 15, 64, 17, 72, 19, 80, 21, 88, 23, 96, 25, 104, 27, 112, 29, 120, 31, 128, 33, 136, 35, 144, 37, 152, 39, 160, 41, 168, 43, 176, 45, 184, 47, 192, 49, 200, 51, 208, 53, 216, 55, 224, 57, 232, 59, 240, 61, 248, 63, 256, 65, 264, 67, 272, 69, 280, 71, 288, 73, 296, 75, 304, 77, 312, 79, 320, 81, 328, 83, 336, 85, 344, 87, 352, 89, 360, 91, 368, 93, 376, 95, 384, 97, 392, 99] 
[0, 1, 16, 3, 32, 5, 48, 7, 64, 9, 80, 11, 96, 13, 112, 15, 128, 17, 144, 19, 160, 21, 176, 23, 192, 25, 208, 27, 224, 29, 240, 31, 256, 33, 272, 35, 288, 37, 304, 39, 320, 41, 336, 43, 352, 45, 368, 47, 384, 49, 400, 51, 416, 53, 432, 55, 448, 57, 464, 59, 480, 61, 496, 63, 512, 65, 528, 67, 544, 69, 560, 71, 576, 73, 592, 75, 608, 77, 624, 79, 640, 81, 656, 83, 672, 85, 688, 87, 704, 89, 720, 91, 736, 93, 752, 95, 768, 97, 784, 99] 
[0, 1, 32, 3, 64, 5, 96, 7, 128, 9, 160, 11, 192, 13, 224, 15, 256, 17, 288, 19, 320, 21, 352, 23, 384, 25, 416, 27, 448, 29, 480, 31, 512, 33, 544, 35, 576, 37, 608, 39, 640, 41, 672, 43, 704, 45, 736, 47, 768, 49, 800, 51, 832, 53, 864, 55, 896, 57, 928, 59, 960, 61, 992, 63, 1024, 65, 1056, 67, 1088, 69, 1120, 71, 1152, 73, 1184, 75, 1216, 77, 1248, 79, 1280, 81, 1312, 83, 1344, 85, 1376, 87, 1408, 89, 1440, 91, 1472, 93, 1504, 95, 1536, 97, 1568, 99] 
[0, 1, 64, 3, 128, 5, 192, 7, 256, 9, 320, 11, 384, 13, 448, 15, 512, 17, 576, 19, 640, 21, 704, 23, 768, 25, 832, 27, 896, 29, 960, 31, 1024, 33, 1088, 35, 1152, 37, 1216, 39, 1280, 41, 1344, 43, 1408, 45, 1472, 47, 1536, 49, 1600, 51, 1664, 53, 1728, 55, 1792, 57, 1856, 59, 1920, 61, 1984, 63, 2048, 65, 2112, 67, 2176, 69, 2240, 71, 2304, 73, 2368, 75, 2432, 77, 2496, 79, 2560, 81, 2624, 83, 2688, 85, 2752, 87, 2816, 89, 2880, 91, 2944, 93, 3008, 95, 3072, 97, 3136, 99] 
+0

唯一的问题,我想保留其他数字但处于原始状态:/ –

+0

@Ez Az现在看到。 – Gahan

+0

我需要一遍又一遍地修改同一个列表,但如果我写: 对于x在new_list: 如果x%2 == 0: ls.append(X * 10) 其他: ls.append( x) 它只是不会工作。 –

0

我想改变列举如此:1,2,3,4,5,6,7,8成为1,4,3,8,5,16等

虽然我不明白你怎么乘6与16结束了,我想这是你所需要的:

new_list = [] 

for x in range(1,100): 
    if x % 2 == 0: new_list.append(x*2) 
    else: new_list.append(x) 

print(new_list) 

如果数字被2整除,你用2乘,并将其附加到一个新的列表。如果没有,你只需追加它,而不会相乘。

运行这个程序,你会得到以下输出:

[1, 4, 3, 8, 5, 12, 7, 16, 9, 20, 11, 24, 13, 28, 15, 32, 17, 36, 19, 40, 21, 44, 23, 48, 25, 52, 27, 56, 29, 60, 31, 64, 33, 68, 35, 72, 37, 76, 39, 80, 41, 84, 43, 88, 45, 92, 47, 96, 49, 100, 51, 104, 53, 108, 55, 112, 57, 116, 59, 120, 61, 124, 63, 128, 65, 132, 67, 136, 69, 140, 71, 144, 73, 148, 75, 152, 77, 156, 79, 160, 81, 164, 83, 168, 85, 172, 87, 176, 89, 180, 91, 184, 93, 188, 95, 192, 97, 196, 99] 
0

你不能老是用0乘,因为结果将始终为0。

result=1 
for i in range (1 , 10): 
    if i%2==0: 
    result*=i 
print(result)  
0
import numpy as np 
l = range(100) 
np.product(l[0::2]) 

这会给你一个列表的每第二个元素和乘法。

0

使用范围()来生成要更改的条目的索引...

numbers = [1, 2, 3, 4, 5, 6, 7, 8] 

for i in range(1, len(numbers), 2): 
    numbers[i] *= 2 

将导致包含数字列表

[1, 4, 3, 8, 5, 12, 7, 16] 
相关问题