python 生日悖论_python自学日记6——列表

本文记录了作者在自学Python过程中遇到的问题和解决思路,涉及列表的累积和计算、字符串操作、互为回文判断以及生日悖论的实现。重点介绍了列表操作中的错误和陷阱,如误用`sum`、混淆`append`与`=`、列表切片的细节,以及字符串排序的注意事项。同时,文章探讨了如何高效地查找列表中的重复元素和互为回文的单词对。
摘要由CSDN通过智能技术生成

学习python时记录自己或观察别人从错误到正确的思路远比只看正确答案效果好

1.编写一个函数,接收一个数字列表,并返回其累积和,例如[1,2,3]的累积和为[1,3,6]

看到求和想到前面用到的内置函数sum(t),但是sum只说了是求列表内所有值的和,不知道能不能求部分和,所以需要做一下测试

t=[1,2,3]

sum(t[:2])

返回值是3,表示可以用sum,然后得出如下代码:

def cumulative_sum(t):

res=[]

for i in range(len(t)-1): #刚开始想着后面有i+1,以前这里都是需要减一的,但是忽略了":(i+1)"是不包括右侧的i+1的,所以不用减一

res.append(sum(t[:(i+1)]))

return res

t=[1,2,3]

cumulative_sum(t)

返回值是[1,3],所以把减一去掉就可以了

def cumulative_sum(t):

res=[]

for i in range(len(t)):

res.append(sum(t[:(i+1)]))

return res

t=[1,2,3]

cumulative_sum(t)

这里有两点需要注意下,res后用append,我刚开始写成了res[i]=sum(t[:(i+1)]),这把字典和列表方法弄混,另外就是忘记了t[:(i+1)]中的“:”,也造成报错,需要注意下这些细节地方,这些bug是可以直接显示出来的,但是刚才那个减一是显示正常但是不符合预期结果,因为我们知道预期结果,所以才能检查出问题,如果不知道那就难了,写代码时还是需要提前想清楚。

列表删除元素有三种方法,需注意三者区别和是否有返回值:t.pop(),pop修改列表,并返回被删除掉的值,默认删除最后一个

del t[i],删除后不返回值,可以使用切片删除多个值

如果你知道要删除的元素而不知道下标,可以使用remove,返回值是None

对象和值:

a='banana'

b='banana'

a is b

输出是True

c=[1,2,3]

d=[1,2,3]

c is d

输出是False

前面a和b我们会说他们是相同的,在这个例子里python只建立了一个自发货车对象,而a和b都引用了它。

而后面两个我们可以说c和d是相等的,因为他们有相同的元素,但他们不是相同的。因为他们并不是同一个对象。如果两个对象相同,则不然相等,如果相等,但不一定相同。注意区分相同和相等。

区分修改列表的操作和新建列表的操作十分重要。例如append是修改列表,“+”则是新建列表。

t1=[1,2]

t2=t1.append(3)

print(t1)

print(t2)

[1, 2, 3]

None #t2返回None说明t1.append(3)没有返回值

t3=t1+[4]

print(t3)

[1, 2, 3, 4]

切片操作会新建一个列表

def tail(t):

return t[1:]

letters=['a','b','c']

rest=tail(letters)

print(rest)

['b', 'c']

2.编写一个函数is_anagram,接收两个字符串,当他们互为回文时返回True

给的提示是两个单词,如果重新排列其中一个的字母可以得到另一个则互为回文,这个提示我是看懂了,但是感觉不太对,上网查了下也只查了些诗中有互为回文的,但是那个写的是前面说的互为倒序的,那么就奇怪了,互为回文和互为倒序有什么区别,暂时先按照提示来写吧

def is_anagram(w

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值