前几天,学完python的列表之后,我们老师留了一道关于列表的题目。几天后,老师讲解习题,很荣幸成为被老师点名讲解自己代码的其中之一下面把我的想法分享一下。

描述
一个由n(n>1)个数字组成的列表 ls,输出一个列表lt,其中lt中第i个元素等于ls中除ls[i]之外所有元素的乘积。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬
‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪输入输出示例:
示例 1
[1,2,3,4]
[24,12,8,6]

题目解析:
简单来说一下本题的意思,就是把列表中的某个元素转换成除了本身之外的其他元素的乘积,然后在输出出来,很容易理解吧,然而想要完美的完成它却不容易。
问题思路:
这道题我想了好久(是在吃晚饭的时候),其实很容易理解。例如第一个元素,除了第一个元素之外的乘积很好计算,利用循环累乘的思想就行了。但第二个元素就不容易了,因为如果继续累乘的话,那就少了第一个元素,那怎么办呢?我们可以把第一个元素删除,然后放在最后一个元素啊,这样又和上面的一样了,这不就很简单的解决了。(然后,突然发现饭凉了,悲伤,但想出来了办法还是很高兴的。)
代码示例:

lt=eval(input())
i=0
lt1=[]
while i<len(lt):
    sum=1
    a=lt[0]
    del lt[0]
    for j in lt:
        sum=sum*j
    lt1.append(sum)
    lt.append(a)
    i+=1
print(lt1)

(抱歉,代码貌似有些简陋,大家将就着看)
代码解析:
前三行就不解释了,就是列表的输入,然后先建立一个列表用来存放累乘过后的元素。第四行,循环的次数就是列表中元素的个数。循环里,先给sum设定一个初始值1(累加的话,初始值就是0了),不然会报错的。首先我们先把列表中第一个元素赋值给一个变量a,接着删除列表中第一个元素的,然后就行累乘,并把结果放入新建立列表中,最后我们再把删除的元素重新加入到原列表中,成为列表最后一个元素。继续循环,最后输出新列表,就是我们的结果了。