2017-06-06 96 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] 
相關問題