Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Help: List comprehension
#1
I have the following piece of code which I want to simplify/write more clean using list comprehension.
How would I achieve this?

        type_list = []

        input = [['car', 'red', '10'], ['train', 'blue', '20'], ['airplane', 'gray', '300']]
        if input is not None:
            for entry in input:
                if entry[0] != 'car':
                    type_list.append(entry[0])
                else:
                    type_list.append(None)

        return type_list
Reply
#2
foo = [['car', 'red', '10'], ['train', 'blue', '20'], ['airplane', 'gray', '300']]

# list comprehension
bar = [first if first != 'car' else None for first, *rest in foo]
print(bar)

# using a function
def check(first, *rest):
    if first != 'car':
        return first
bar = [check(*item) for item in foo]
print(bar)

# or simplifying your code
bar = []
for first, *rest in foo:
    bar.append(first if first != 'car' else None)
print(bar)
Note that list comprehension doesn't always improve the code.
also, don't use input as name, you are overriding the built-in function input()
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#3
(Apr-08-2020, 01:33 PM)buran Wrote:
foo = [['car', 'red', '10'], ['train', 'blue', '20'], ['airplane', 'gray', '300']]

# list comprehension
bar = [first if first != 'car' else None for first, *rest in foo]
print(bar)

# using a function
def check(first, *rest):
    if first != 'car':
        return first
bar = [check(*item) for item in foo]
print(bar)

# or simplifying your code
bar = []
for first, *rest in foo:
    bar.append(first if first != 'car' else None)
print(bar)
Note that list comprehension doesn't always improve the code.
also, don't use input as name, you are overriding the built-in function input()

Thank you very much for your swift reply! I understand not using input.
Reply
#4
Why do you need the if statement on line 4? Clearly the expression input is not None isn't going to be False.
Reply
#5
(Apr-09-2020, 04:20 AM)ndc85430 Wrote: Why do you need the if statement on line 4? Clearly the expression input is not None isn't going to be False.

Because my input at some point can also be None, although that is not shown in the example I gave.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  List Comprehension Issue johnywhy 5 503 Jan-14-2024, 07:58 AM
Last Post: Pedroski55
Question mypy unable to analyse types of tuple elements in a list comprehension tomciodev 1 468 Oct-17-2023, 09:46 AM
Last Post: tomciodev
  Using list comprehension with 'yield' in function tester_V 5 1,243 Apr-02-2023, 06:31 PM
Last Post: tester_V
  list comprehension 3lnyn0 4 1,389 Jul-12-2022, 09:49 AM
Last Post: DeaD_EyE
  List comprehension used differently coder_sw99 3 1,708 Oct-03-2021, 04:12 PM
Last Post: coder_sw99
  How to invoke a function with return statement in list comprehension? maiya 4 2,821 Jul-17-2021, 04:30 PM
Last Post: maiya
  List comprehension and Lambda cametan 2 2,232 Jun-08-2021, 08:29 AM
Last Post: cametan
  What is the difference between a generator and a list comprehension? Pedroski55 2 2,211 Jan-02-2021, 04:24 AM
Last Post: Pedroski55
  For Loop with List Comprehension muzikman 25 6,572 Dec-18-2020, 10:45 PM
Last Post: muzikman
  Using recursion instead of for loops / list comprehension Drone4four 4 3,130 Oct-10-2020, 05:53 AM
Last Post: ndc85430

Forum Jump:

User Panel Messages

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