前幾天,學完python的列表以後,咱們老師留了一道關於列表的題目。幾天後,老師講解習題,很榮幸成爲被老師點名講解本身代碼的其中之一下面把個人想法分享一下。
描述
一個由n(n>1)個數字組成的列表 ls,輸出一個列表lt,其中lt中第i個元素等於ls中除ls[i]以外全部元素的乘積。
輸入輸出示例:
示例 1
[1,2,3,4]
[24,12,8,6]
題目解析:
簡單來講一下本題的意思,就是把列表中的某個元素轉換成除了自己以外的其餘元素的乘積,而後在輸出出來,很容易理解吧,然而想要完美的完成它卻不容易。
問題思路:
這道題我想了很久(是在吃晚飯的時候),其實很容易理解。例如第一個元素,除了第一個元素以外的乘積很好計算,利用循環累乘的思想就好了。但第二個元素就不容易了,由於若是繼續累乘的話,那就少了第一個元素,那怎麼辦呢?咱們能夠把第一個元素刪除,而後放在最後一個元素啊,這樣又和上面的同樣了,這不就很簡單的解決了。(而後,忽然發現飯涼了,悲傷,但想出來了辦法仍是很高興的。)
代碼示例:
1 lt=eval(input())
2 i=0
3 lt1=[]
4 while i<len(lt):
5 sum=1
6 a=lt[0]
7 del lt[0]
8 for j in lt:
9 sum=sum*j
10 lt1.append(sum)
11 lt.append(a)
12 i+=1
13 print(lt1)
(抱歉,代碼貌似有些簡陋,你們將就着看)
代碼解析:
前三行就不解釋了,就是列表的輸入,而後先創建一個列表用來存放累乘事後的元素。第四行,循環的次數就是列表中元素的個數。循環裏,先給sum設定一個初始值1(累加的話,初始值就是0了),否則會報錯的。
首先咱們先把列表中第一個元素賦值給一個變量a,接着刪除列表中第一個元素的,而後就行累乘,並把結果放入新創建列表中,最後咱們再把刪除的元素從新加入到原列表中,成爲列表最後一個元素。繼續循環,最後輸出新列表,就是咱們的結果了。
原創不易,但願您能點個贊。