[英]Multiplying every Nth element in a list by M
我有一個問題,我似乎無法弄清楚。 我對 Python 很陌生,只編碼了三個星期。 任何幫助表示贊賞。
我們傳入 3 個輸入:
您應該將每個第 N 個元素(不要將第 0 個元素相乘)乘以 M。因此,如果 N 為 3,則從第 3 個元素開始,即索引 2。
如果少於 N 個元素,那么您應該輸出未更改的輸入列表。
我似乎無法弄清楚這一點。 我在這里嘗試了很多不同的東西。 目前,我有以下內容,但根本不起作用。
import sys
M= int(sys.argv[2])
N= int(sys.argv[3])
numbers= sys.argv[1].split(',')
for i in range(0, len(numbers)):
numbers[i]= int(numbers[i])
for N in numbers:
if numbers[i] > 0:
total = N * M
print(total)
else:
print(numbers)
我什至不接近輸出應該是什么。 對此感到失落。 這是我的代碼。 看起來他們想要列表中的輸出。
Program Failed for Input: 1,2,3,4,5,6 5 3
Expected Output: [1, 2, 15, 4, 5, 30]
Your Program Output:
5
10
15
20
25
30
您可以嘗試使用切片進行列表理解。
numbers[N-1::N] = [x * M for x in numbers[N-1::N]]
此解決方案基於您的原始解決方案。 一個更pythonic的人會使用例如列表理解,所以在未來記住這一點,
output = [numbers[0]]
if len(numbers) >= N:
for i in range(1,len(numbers)):
if ((i+1)%N) is 0:
output.append(numbers[i]*M)
else:
output.append(numbers[i]);
else:
output = numbers
如果 N 不大於列表大小,則程序構造一個新的數字列表,其中每個第 N 個數字都乘以 M。這是通過一個簡單的模運算符完成的。 Python 中的索引從零開始, i 遍歷索引值,但您想要的輸出將元素計數為從 1 開始 - 因此i+1
在模中。 如果不是每個第 N 個 - 程序只需附加舊值。 如果列表總共短於 N,則將整個未更改列表分配給output
列表。
這對你有用嗎?
res = []
for num in numbers:
if num > 0:
total = num * M
res.append(total)
if len(res) != len(numbers):
print (numbers)
else:
res.reverse()
print (res)
因此,經過多次嘗試並從作為程序員的朋友那里得到反饋后,我最終得到了正確的輸出:
newlist = []
if len(numbers) < N:
newlist = numbers
else:
for i in range(0, len(numbers)):
num = numbers[i]
if (i+1) % N == 0:
newlist.append(num*M)
else:
newlist.append(num)
i+=1
print(newlist)
# Input
import sys
M= int(sys.argv[2])
N= int(sys.argv[3])
# convert strings to integers
numbers= sys.argv[1].split(',')
for i in range(0, len(numbers)):
numbers[i]= int(numbers[i])
# if the length of our list is greater than our supplied value
# loop to multiply(starting at the 3rd position in the list) by M
if len(numbers) > N :
for num in range(2, len(numbers), 3) :
numbers[num] = numbers[num] * M
print(numbers)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.