A single () with no separators passes through whatever is inside it
>>> "something"
'something'
>>> ("something")
'something'
>>> ("something",)
('something',)
To make a tuple, you need a trailing comma or to explicitly cast to a tuple tuple()
(x) # just x
(x,) # tuple containing x
If you want to create a tuple directly, you can skip creating the intermediate list, and form a generator expression
You actually already do this when forming the list in your question, but it may come with a different name
[x for x in my_iterable if some_condition(x)] # list comprehension
(x for x in my_iterable if some_condition(x)) # generator expression
tuple(x for x in my_iterable if some_condition(x)) # tuple from generator