11 Tips And Tricks To Write Better Python Code

Sdílet
Vložit
  • čas přidán 27. 08. 2024

Komentáře • 452

  • @patloeber
    @patloeber  Před 4 lety +137

    I hope you find these tips helpful! Let me know if you have any other Python tips that improve your code :)

    • @uploadvoice
      @uploadvoice Před 4 lety

      Helpful but too many ads cut...

    • @kingkhann9
      @kingkhann9 Před 2 lety

      Can you iterate from say idx 2 to n-4 of a list using enumerate without slicing or any extra lines of code...

    • @abhisheksanwal1106
      @abhisheksanwal1106 Před 2 lety +1

      @@sudhanshuranjan9 ya membership test is faster in set

    • @Princess0Reem
      @Princess0Reem Před 2 lety +1

      remarkable!

    • @jorgemercadog
      @jorgemercadog Před 2 lety

      Thank you!! Cheers from Chile!

  • @user-wg2ph7ve8c
    @user-wg2ph7ve8c Před 2 lety +389

    In Python 3.9.0 or greater we can merge dictionaries using `|`:
    d1 = {"name": "Alex", "age": 25}
    d2 = {"name": "Alex", "city": "New York"}
    merged_dict = d1 | d2

    • @drygordspellweaver8761
      @drygordspellweaver8761 Před 2 lety +10

      I like this as it stays true to Pipe symbol

    • @billw8dsx939
      @billw8dsx939 Před 2 lety +1

      you rock

    • @CryptoIgnition
      @CryptoIgnition Před 2 lety +5

      And
      print(merged_dict == d1 | d2)
      will print out true

    • @flames9310
      @flames9310 Před 2 lety +1

      This syntax is way simpler.

    • @albo5194
      @albo5194 Před rokem +1

      Is there an easy (and fast for large dictionaries) way to merge dictionaries in a way, that it includes every value of both dicts with the same key? for example, if d2 would include "name": "Luca" instead of "Alex", i would like the merged output to be like:
      {"name": ["Alex", "Luca"], "age": 25, "city": "New York"}

  • @FailedSquare
    @FailedSquare Před 3 lety +264

    0:20 Iterate with Enumerate x For Loops with If
    1:02 List Comprehension x For Loops
    1:51 Sort iterables with sorted()
    3:00 Unique values with Sets
    3:37 Generators replacement for Lists
    4:58 default values for dictionary keys
    6:06 Count objects with collections.Counter
    7:39 f-Strings > str.format()
    8:20 Build up strings with .join()
    9:27 merge dictionaries - This feature is updated again in 3.9 using |
    10:00 simplify if statements

    • @patloeber
      @patloeber  Před 3 lety +8

      Thanks for the summary :)

    • @yt-sh
      @yt-sh Před 2 lety +4

      @@patloeber you made this in 11 min, I see what u did there

    • @DavidTangye
      @DavidTangye Před 2 lety +6

      @@patloeber This is a very nice video for quick reference on these coding best practices. Can you please copy this list of times to the video Description for future reference. That makes the vid hugely helpful for in future.

  • @evanhagen7084
    @evanhagen7084 Před 2 lety +347

    On the last tip it would be much faster to use a set instead of a list. Sets have constant lookup time but lists have O(n) lookup time.

    • @sshishov
      @sshishov Před 2 lety +35

      To convert list into set you need to execute O(n) operation.

    • @evanhagen7084
      @evanhagen7084 Před 2 lety +46

      @@sshishov my point is you shouldn't even create a list in the first place. You should create a set to begin with

    • @sshishov
      @sshishov Před 2 lety +46

      Agree, but sometimes lists are needed if you want to keep duplicates or you want to keep items in inserted order.

    • @andraspongracz5996
      @andraspongracz5996 Před 2 lety +13

      @@sshishov True, but if you want to check membership, say, n times, than its O(n) vs. O(n**2). It depends on the problem which data structure is better, as your second comment shows. But if you are only worried about runtime, then @Evan Hagen is correct: you basically cannot lose by using a set (I mean even if you have to convert first), because if you run it once, it is the same runtime, but if you do it many times, then set is the better choice.

    • @sshishov
      @sshishov Před 2 lety +5

      @@andraspongracz5996 agree 👍

  • @Daniel-um9ye
    @Daniel-um9ye Před rokem +9

    Superb content. I am a C++ programmer, but since 2019 have been dabbling with python. Being pythonic is actually what I look for as of now. Thanks.

  • @vitalimueller6209
    @vitalimueller6209 Před 3 lety +24

    Nr.3 you can also do:
    from operator import itemgetter
    sorted_data = sorted(data, key=itemgetter('age'))

  • @manuelmanolo7099
    @manuelmanolo7099 Před 2 lety +11

    I thought this would be something that would go way over my head but, as some that recently started learning python, this was really valuable!

  • @schedarr
    @schedarr Před 3 lety +9

    That is absolutely golden video. Extremaly useful tricks that will make your life way much easier. I've already used 10 out of 11 but still it's nice refresher.

  • @eminm6383
    @eminm6383 Před 2 lety +3

    I almost don't know any python, but I was able to comprehend 80% of the content. Amazing simple explanation. Thanks.

  • @jordangl1
    @jordangl1 Před 2 lety +5

    Your videos are by far the most concise and easiest to assimilate compared to every other YT Python teacher (to me). Thanks for taking the time. Good stuff

  • @TheSuperUser
    @TheSuperUser Před 3 lety +39

    Great video. Please make more of these quick tips for comparisons of "beginner" python code vs experienced developer idioms

  • @saurabhjain507
    @saurabhjain507 Před 4 lety +24

    I love how you explain with simplicity. Great content.

    • @patloeber
      @patloeber  Před 4 lety +8

      Thank you! Glad you like it!

  • @jth5726
    @jth5726 Před 2 lety +2

    dude, I've been doing a programming course 12 weeks, I feel like f-strings are something we should have been taught immediately, why am I only learning it through you

  • @etgaming6063
    @etgaming6063 Před rokem +1

    If you aren't speeding up your videos during your scripting then you are a REALLY FAST typer, like holy crap. IDK how you can type those lists in under a second, that is crazy to me.

  • @YouAreNotFree1
    @YouAreNotFree1 Před 3 lety +2

    First example: return [max(i, 0) for i in data]

  • @RicardoAmaralAndrade
    @RicardoAmaralAndrade Před 2 lety +2

    Simply wonderful! Subscribed in the first 2 minutes! Python is the greatest modern language, and these tips are gold!

  • @Arson_Oakwood
    @Arson_Oakwood Před 5 měsíci

    I'm amazed at how there are beginner programmers, who never read basic tutorial in official documentation, and then watch similar videos, thinking they are learning advanced concepts.

  • @plumberski8854
    @plumberski8854 Před měsícem

    Clear tips, like how you explain them, are simple and clear!

  • @srimanthmahadev8272
    @srimanthmahadev8272 Před 2 lety +24

    An alternative of TIP 10:
    if you have two dictionaries you can join them using | operator.
    d1={'one' : 1, 'two':2}
    d2={'three':3}
    d3=d1|d2
    print(d3)
    output: {'one': 1, 'two': 2, 'three': 3}

    • @patloeber
      @patloeber  Před 2 lety

      yep great tip!

    • @vishnuuvardhanreddy3010
      @vishnuuvardhanreddy3010 Před 2 lety

      Bro i am new to python I am very much interested to learn python please give me suggestion to develop my python basics to reach up to a professional level

    • @notbme2731
      @notbme2731 Před 2 lety

      @@vishnuuvardhanreddy3010 CZcams and reddit are your best friends to learn anything

    • @user-zk3uo3ti6f
      @user-zk3uo3ti6f Před 2 lety +1

      Not worked on all versions of python, just new.

    • @user-zk3uo3ti6f
      @user-zk3uo3ti6f Před 2 lety

      What about dict update method?

  • @Kinos141
    @Kinos141 Před 2 lety +2

    Finally, how to do strings properly. I love using something like that in c#, and I'm glad it's on other languages like python.

  • @rushi7312
    @rushi7312 Před 2 lety +2

    I'm a beginner -ish and knew about half to 2/3rd, but also learned a few good tricks :)
    Thanks

  • @thebuggser2752
    @thebuggser2752 Před 2 lety +5

    Great collection of useful tips, presented very clearly and concisely. Thanks!!

  • @diegoftorrent
    @diegoftorrent Před 3 lety +4

    Congratulations for this piece of art!!!!
    This kind of teach methodology is extremely rare.
    Thank you!

  • @alankritverma1839
    @alankritverma1839 Před 6 měsíci

    one of the best python videos.
    Really useful

  • @javohirorziqulov9644
    @javohirorziqulov9644 Před 3 lety +6

    only one word: amazing...

  • @Leo3ABPgamingTV
    @Leo3ABPgamingTV Před 2 lety +9

    Tip 1 and 2: are there any advantages in terms of performance and/or memory management? As somebody who has to work with several programming languages and switch between them on the fly, I think I'd rather keep things as uniform and generic as possible between languages rather than stick to language specific idioms just for the sake of it.

    • @jackgenewtf
      @jackgenewtf Před 2 lety +1

      You're not doing it "for the sake of it," you're making it to make your code readable to others in your team.

    • @Leo3ABPgamingTV
      @Leo3ABPgamingTV Před 2 lety +1

      ​@@jackgenewtf I think you missing my point about having to work with multiple programming languages, and basing your comment off an assumption that everybody else on the team is following python (or any language) specific idioms. My question was - are there any real practical (technical) benefit beyond the "we just used to do it that way" (i.e. language "idiom") and an overused "readability" argument. If people regularly work and switch between several different languages, having as uniform code structure as possible between all those languages seems like a more effective way to go, including the benefit for other team members who work with several languages as well or maybe simply not very experienced with python.
      Also, some people seem to be making a mistake by thinking that concise readable code is the same as cramming as much as possible into a single line. For example in a tip #2 of this video I would argue that a first shown method of filling a list is actually more readable and comprehensible than the second one, especially for people with limited or even no experience with python. Even for somebody not familiar with python syntax it would be more or less clear at a glance what happens in the code. Unfortunately same can not be said about a "correct" example featured in the tip.

    • @R3mak3r
      @R3mak3r Před 2 lety +1

      Hey! The first tipp is really useful. Because it's a common issue - at least for beginners - using len for iterations. Because they use the lenght as an index instead of length - 1.
      So this method is readable and more secure because you cant use a non existent index.
      About the list comprehetions, ... I'm also not a fan, because I had trouble in the beginning to understand these. Plus I'm not a fan of long lines.

  • @davidvanleeuwen3274
    @davidvanleeuwen3274 Před 2 lety +1

    Thanks a lot! The first minute already helps a lot.

  • @wintur2856
    @wintur2856 Před 6 měsíci

    Thanks for these tips! It's hard finding content outside beginner courses.

  • @latt.qcd9221
    @latt.qcd9221 Před 3 lety +1

    The idea of list comprehensions was new to me, but I was curious if there was an option for dictionary comprehensions and, sure enough, there is! Was able to clean up a lot of my dictionary for loops. Thanks!

  • @gauravrajput8109
    @gauravrajput8109 Před 2 lety

    I am so glad I found this channel.

  • @ekkyarmandi
    @ekkyarmandi Před 2 lety

    Nice tips. It speedup my code writing. Thanks, man.

  • @nebular-nerd
    @nebular-nerd Před rokem

    Some interesting tips, I'm just going through a reformat of a new script and this should help tidy and speed some operations.

  • @gomathikreddy350
    @gomathikreddy350 Před 2 lety +2

    Great content. Thank you for sharing ur knowledge. It'll help if the font sizes are larger for screen casts. I watch ur videos on an old android phone. 😐

    • @patloeber
      @patloeber  Před 2 lety +1

      thank you for the feedback! I try to improve this on my newer videos

    • @gomathikreddy350
      @gomathikreddy350 Před 2 lety

      Thank you. 😊🙏

  • @pouyan74
    @pouyan74 Před 2 lety +1

    This is one of those channels that separate my life into pre- and post-subscription eras!

    • @patloeber
      @patloeber  Před 2 lety +2

      this comment made my day :) glad you're here!

  • @DisSsha
    @DisSsha Před 2 lety +2

    Hello, Thanks for those great tips !! Does someone knows which IDE he is using ?

  • @gudguy1a
    @gudguy1a Před 9 měsíci

    Still very relevant content, thanks for having this.

  • @mmxo2631
    @mmxo2631 Před 2 lety

    literally watched for 1:03 seconds and i love the video. I'm a beginner btw. SUBBED!

  • @AladdinPersson
    @AladdinPersson Před 4 lety +2

    Nice video! I really like that you made those slides in between the tips (gonna steal that for my future videos 😁)

    • @patloeber
      @patloeber  Před 4 lety +1

      Thank you! Glad you like it

  • @marcelomelo6349
    @marcelomelo6349 Před 7 měsíci

    My tips:
    1.Use map instead of for
    2.Don't forget the walrus operator, just a details.
    3.Don't use func(list[0], list[1]) use func(*list)
    4.The tip 3 is also good for creating iterables in certain cases, [*list] for example
    5.Don't iterate if you want new items for the list, use list.extend()

  • @fahnub
    @fahnub Před 2 lety

    bro this was super helpful. thanks for this.

  • @MrGustavCR
    @MrGustavCR Před 4 lety +8

    Another great video. Thanks for the amazing content.

  • @PaulTheEldritchCat
    @PaulTheEldritchCat Před 2 lety

    Nice tips, I'll save the video for later. Thanks!

  • @chakkarapaniv
    @chakkarapaniv Před 4 lety +1

    Hey, Excellent videos. The style is amazing! and more informative!. I am following you.

  • @akira_asahi
    @akira_asahi Před 2 lety

    Thank you for the video. I am grateful for your time and contribution. Kind regards, Akira.

  • @tincustefanlucian7495
    @tincustefanlucian7495 Před 2 lety

    Generators tip was quite a nice trick to know! So easy to be confounded with list generator.

    • @patloeber
      @patloeber  Před 2 lety

      yep it's very handy sometimes :)

  • @octobotdev
    @octobotdev Před rokem

    Thanks for the tips, always great to listen to fellow Python devs!

  • @faizalimuhammadzoda4731
    @faizalimuhammadzoda4731 Před 3 lety +2

    Very useful information explained in a very easy-to-understand way. Thank you for the effort.

  • @prashanthreddy1924
    @prashanthreddy1924 Před 2 lety

    you made me a better programmer with this video. Please do more series of videos like this.

  • @lakshmanans-zb5sg
    @lakshmanans-zb5sg Před 2 měsíci

    combine one and two : print ([0 if value

  • @onurkoc6869
    @onurkoc6869 Před 2 lety

    You are Superman:) Thanks for all of sharing.

  • @jorgeluismongeblanco6933

    For #1, I would prefer a list comprehension: data = [0 if e < 0 else e for e in data]

  • @knowledgedaily1173
    @knowledgedaily1173 Před 2 lety

    This is one of the best python related videos I have seen.

  • @petelogiudice8202
    @petelogiudice8202 Před 2 lety

    Very helpful in refactoring my brain to be more pythonic!

  • @HKHforpeace
    @HKHforpeace Před 4 lety +3

    Really admire your work! Nice work mate

  • @mostafasadeq3153
    @mostafasadeq3153 Před 2 lety

    what a legend , ty very much man

  • @rutanshudesai
    @rutanshudesai Před rokem

    amazing tips, very very valuable. thank you for sharing.

  • @ssshukla26
    @ssshukla26 Před 2 lety

    Merge dictionaries.... Woahhhhh.... Oh my God... Thank you so much... That will make my life a bit easier....

  • @abdulqadar9580
    @abdulqadar9580 Před 2 lety

    Please make complete playlist like these tips of python

  • @shababe2243
    @shababe2243 Před 2 lety

    Excellent information,Thanks

  • @NavinKumar-tv9hg
    @NavinKumar-tv9hg Před 11 měsíci

    Wonderful. Thank you!

  • @stevenwilson5556
    @stevenwilson5556 Před 2 lety +1

    The Squares example.. here's Python code:
    squares = [i*i for i in range(15)]
    print(squares)
    Here's the R code:
    x = 1:14; x^2
    Python 48 characters, 2 lines
    R 13 characters, 1 line
    Advantage: R.

    • @stevenwilson5556
      @stevenwilson5556 Před 2 lety +1

      at 4:15 using generators:
      Python:
      my_gen = (i for i in range(10000))
      print(sum(my_gen))
      R:
      x = 1:1e4; sum(x)
      Python 52
      R 17
      Advantage: R.

  • @xoca7171
    @xoca7171 Před 2 lety +3

    I wish I knew the get method for dicts sooner. I've been checking for the key first this whole time 😐

  • @enzopestana
    @enzopestana Před 2 měsíci

    really helpful, thanks a lot

  •  Před 3 lety +2

    Hey dude. Thanks for this video, it helped me a lot in my studies! What's the theme you're using? I found it really cool and couldn't find it on the marketplace

    • @patloeber
      @patloeber  Před 3 lety +2

      It's the night owl theme. Have a look at my tutorial about my VS Code setup :)

  • @akshitstenaa
    @akshitstenaa Před 3 lety

    I am your fan now , thx a ton mate for all these tips.

    • @patloeber
      @patloeber  Před 3 lety +1

      Awesome, thank you!

    • @akshitstenaa
      @akshitstenaa Před 3 lety

      Please try adding videos on Scarpping, ML & analytics . 🙂

  • @travelchimps6637
    @travelchimps6637 Před 6 měsíci

    Great content and background music

  • @MasterEhsan369
    @MasterEhsan369 Před měsícem

    THANKS that was useful...

  • @mei2654
    @mei2654 Před 2 lety

    2:59 you can preserve order with the help of sorted function
    example:
    my_list = [1, 2, 2, 3, 4, 5, 6, 7, 7 , 9, 8]
    sorted(set(my_list), key= lambda x: my_list.index(x))
    >>> [1, 2, 3, 4, 5, 6, 7, 9, 8]

    • @0LoneTech
      @0LoneTech Před rokem +1

      Fun fact: Dictionaries are now order preserving, so you can do the old trick of using a dict as a set and keep order without sorting.
      E.g. {k:None for k in [5,2,3,2,6,5,1]}.keys()

  • @fabiolean
    @fabiolean Před 2 lety +12

    I've always found list comprehension much less readable than using a for loop. It is technically a shorter way to express the same thing, but you don't save THAT much space. That's a personal preference, though, and I suspect there's plenty of people who feel the opposite way. Maybe it's just because I learned how to program on C++ back in the day so the "for" syntax is comfortable.

  • @AmitabhSuman
    @AmitabhSuman Před rokem

    Really useful tricks! Thanks for sharing.

  • @akashgillella
    @akashgillella Před 2 lety

    Wonderful tips. Every single one is pretty useful.

  • @alyssonmachado1254
    @alyssonmachado1254 Před 2 lety

    Valuable tips! Thank you very much!

  • @mrsingh5351
    @mrsingh5351 Před 2 lety +1

    super video!
    you could have included zip() function too

  • @faithinverity8523
    @faithinverity8523 Před 2 lety

    Superb [ ] of tips. Thank you!

  • @Zephyr-tg9hu
    @Zephyr-tg9hu Před 3 lety +1

    Awesome tips, thank you!

  • @victorsuarez4333
    @victorsuarez4333 Před 2 lety

    Thank you, this video was very helpful!

  • @zealot4325
    @zealot4325 Před 10 dny

    Thank you!

  • @nates3361
    @nates3361 Před 2 lety +1

    You are like my Python guru! Thank you Sir!

  • @krupaneshkrishnan9284
    @krupaneshkrishnan9284 Před 2 lety

    Great video, Thanks.

  • @namanthacker
    @namanthacker Před 5 měsíci

    Very nice and useful tips

  • @castlecodersltd
    @castlecodersltd Před rokem

    Very useful, thanks ☺

  • @LuisGL90
    @LuisGL90 Před rokem

    Nice tips! Thankyou so much!

  • @mywebuniversity
    @mywebuniversity Před 2 lety

    Excellent video, very precise and nicely done!

  • @manojm9084
    @manojm9084 Před 2 lety

    This is a very good video. Thank you very much , keep up the good work .

  • @saitejam3769
    @saitejam3769 Před rokem

    Sir please post videos on nested loops and tips in nested loops

  • @azsxcvbnhjks
    @azsxcvbnhjks Před 3 lety +1

    the first tips give error if you try it.
    'int' object does not support item assignment

  • @mariovega6282
    @mariovega6282 Před 2 lety

    Most excellent video!

  • @calvindibartolo2686
    @calvindibartolo2686 Před rokem

    dict.setdefault is *exactly* what I needed! thank you so much!

  • @venkatesanr9455
    @venkatesanr9455 Před 4 lety +2

    Expecting some series and by the way, good explanation with informative content, it helps a lot

  • @_Amilio_
    @_Amilio_ Před 3 lety +1

    Love these Python tips

  • @luckyboy-ih5hd
    @luckyboy-ih5hd Před 2 lety +1

    very helpful

  • @whonayem01
    @whonayem01 Před 2 lety

    Thanks, it would help!

  • @zacky7862
    @zacky7862 Před 3 lety +1

    This is great. I'm always looking on better coding style.
    Could you tell which vs code theme that you are using? Thanks

    • @patloeber
      @patloeber  Před 3 lety +1

      Yes, I think it's the Night Owl theme

  • @ABsazerNer
    @ABsazerNer Před 8 měsíci

    This video must be saved 👍

  • @jmsl2027
    @jmsl2027 Před 3 lety +1

    This was very informative, thank you!

  • @albertog2196
    @albertog2196 Před 4 lety

    Best python channel in YT

  • @rabindrareddy6164
    @rabindrareddy6164 Před 2 lety

    great lesson sir

  • @davidtalturejman9185
    @davidtalturejman9185 Před rokem

    Thanks man! Nice video!!

  • @shashishekhar----
    @shashishekhar---- Před 2 lety

    very informative video brother 👍

  • @tigranpapyan2348
    @tigranpapyan2348 Před 6 měsíci

    Actually, regarding the generator part, though it saves a lot of memory, it's way slower compared to lists