Skip to content

Conversation

Eyjan-Huang
Copy link
Contributor

可能包含了多道题目python代码的更新

使用更符合PEP8要求的代码规范来约束
另一种解法进行了不必要的操作,且代码可读性较差。
推荐使用第一种解法
维持原方法的思路,简化了包和匿名函数的用法
原代码使用了reduce包 + 匿名函数来实现 ''.join的操作,去除该部分提升运行效率
减少不必要的变量使用,优化空间复杂度,使用切片替换而不是单个替换
如果不让使用自带函数reversed() 可以使用该方法
python代码简化,符合PEP8标准,可读性加强,效率提升
原方法用了很多不必要的变量和操作,改进后的代码更直观,效率和空间都得到了优化
补充了题主的方法,改写了原先冗余的做法,可读性提升,PEP8标准
补充使用双指针的方法,但是更推荐栈的做法
使用变量名使交换的过程更加清晰,而不是使用之前的next.next这样可读性较差
从后往前换

pre = dummy,cur = 2, post=3
dummpy -> 1 -> 2 -> None
先把cur.next = post.next,此时链表为 1 -> None
�再 post.next = cur 此时链表为 2 -> 1 -> None, dummpy -> 1 -> None
最后 pre.next = post, 此时为 dummpy -> 2 -> 1 -> None
添加限制条件,仅在栈不为空的情况下才允许后续pop()和peek()的操作
@Eyjan-Huang
Copy link
Contributor Author

所有代码经过测试均已通过。

目前看到的python代码主要有几个问题:

  1. 代码命名习惯不好,经常用一些i,x,y这样的变量命名。
  2. 不符合PEP8的标准,比如while(len(lst) != 0):完全可以写成 while lst:
  3. 使用不必要的内存空间,比如:
def example():
    s = 'a'
    return s    #完全可以直接return 'a'
  1. 喜欢自己造轮子,比如:
from functools import reduce

def exmaple():
    lst = ['a', 'b', 'c']

    return reduce(lambda x, y: x + y)    #其目的和''.join(lst)是一样的
  1. 代码过于复杂,可读性太差

很荣幸能在知乎搜到这个项目,一边学习一边能帮仓主完善python代码
从这个项目中受益颇多,很感谢,尽一份绵薄之力希望这个项目越来越好。

用format string提升效率,增加可读性,避免使用索引访问,直接使用切片。
@youngyangyang04
Copy link
Owner

感谢支持,优化的很不错👍

@youngyangyang04 youngyangyang04 merged commit 21bb471 into youngyangyang04:master Aug 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants