python学习之列表元素的积

前几天,学完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,接着删除列表中第一个元素的,然后就行累乘,并把结果放入新建立列表中,最后我们再把删除的元素重新加入到原列表中,成为列表最后一个元素。继续循环,最后输出新列表,就是我们的结果了。

原创不易,希望您能点个赞。

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟师弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值