Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Help for simplifying code
#9
Let's explain what different parts are doing and then put them all together:


bool(condition) evaluates whether condition is True or False:

>>> condition = ''      # empty string (list, tuple, dict etc) is False                                   
>>> bool(condition)                                       
False
>>> condition = 42                                        
>>> bool(condition)                                       
True
In Python True and False are 1 and 0:

>>> False == 0                                            
True
>>> True == 1                                             
True
So 'bool(condition)' evaluates and returns False (0) or True (1). This result is used as index:

>>> condition = 42
>>> ['first', 'second'][bool(condition)]                 
'second'                                      # True is 1 and therefore item at index 1 is returned
>>> condition = ''                                        
['first', 'second'][bool(condition)]          # False is 0 and item at index 0 is returned                
'first'
Alternatively it can be expressed this way:

>>> x = 7 < 42                                            
>>> ['first', 'second'][x]                                
'second'
>>> x = 7 > 42                                            
>>> ['first', 'second'][x]                                
'first'
This enables to return either first or second item in list depending whether condition is true or false.

As it was required to have values 10..12 or None depending on condition truthiness list comprehension is used to emit required values, evaluate condition and return corresponding item: 'give me number or None based on whether condition is true or not for every number in range 10..12'

>>> condition = ''                                        
>>> [[number, None][bool(condition] for number in range(10, 13)]                         
>>> [10, 11, 12]
Returned list is unpacked into variables:

>>> first, second, third = [[number, None][bool(condition)] for number in range(10, 13)]                         
>>> first                                                 
10
>>> second                                                
11
>>> third
12
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply


Messages In This Thread
Help for simplifying code - by mmk1995 - Sep-19-2019, 11:02 AM
RE: Help for simplifying code - by metulburr - Sep-19-2019, 11:20 AM
RE: Help for simplifying code - by perfringo - Sep-19-2019, 12:02 PM
RE: Help for simplifying code - by mmk1995 - Sep-20-2019, 06:16 AM
RE: Help for simplifying code - by perfringo - Sep-20-2019, 06:59 AM
RE: Help for simplifying code - by mmk1995 - Sep-24-2019, 11:46 AM
RE: Help for simplifying code - by wavic - Sep-20-2019, 08:47 AM
RE: Help for simplifying code - by Malt - Sep-24-2019, 12:06 PM
RE: Help for simplifying code - by perfringo - Sep-24-2019, 02:04 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  simplifying a stack of elifs Skaperen 8 4,250 Aug-17-2019, 04:13 AM
Last Post: Skaperen
  Simplifying my code ilondire05 5 3,877 Jul-21-2019, 03:21 AM
Last Post: scidam
  My program subtracts fractions, but for some reason isn't simplifying them RedSkeleton007 9 6,075 Mar-03-2018, 11:45 AM
Last Post: Gribouillis
  Simplifying multiple "or" conditions in if statement. rhubarbpieguy 8 102,512 Jul-22-2017, 12:19 PM
Last Post: rhubarbpieguy

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020