Doesn’t Python treat all empty iterables as false tho? This isn’t unique to python, is it? (though I’m not a programmer…just a dude who writes scripts every now and then)
My point is that the second statement you presented can have the effect of evaluating emptiness of a Sequence (note: distinct from an Iterable), but that only holds true if the target of the conditional IS a sequence. I’m underlining the semantic difference that was elided as a result of falsey evaluation.
thing: Sequence[Any] iirc is iterable, indexable, and reversible.
thing: Iterable[Any] only guarantees that its iterable - and note that iterating can sometimes have the effect of consuming the iterable (e.g. when working with streaming interfaces)
if isinstance(mylist, list) and not mylistProblem solved.
Or
if not mylist # check if list is emptyI think you missed the joke 😅
I thought it was funny!
You’re checking if
mylistis falsey. Sometimes that’s the same as checking if it’s empty, if it’s actually a list, but that’s not guaranteed.Doesn’t Python treat all empty iterables as false tho? This isn’t unique to python, is it? (though I’m not a programmer…just a dude who writes scripts every now and then)
My point is that the second statement you presented can have the effect of evaluating emptiness of a Sequence (note: distinct from an Iterable), but that only holds true if the target of the conditional IS a sequence. I’m underlining the semantic difference that was elided as a result of falsey evaluation.
Ok, help a noob out. What is the difference between a sequence and an iterable? Is a sequence immutable, like a tuple?
An iterable is just something that can be iterated over, like
range(10), or[1, 2, 3].A sequence on the other hand is a Collection that is reversible.
https://docs.python.org/3/library/collections.abc.html#collections-abstract-base-classes
I know what an iterable is. But I am talking about
Type[Iterable], which iirc does not obey falsey eval when empty.thing: Sequence[Any]iirc is iterable, indexable, and reversible.thing: Iterable[Any]only guarantees that its iterable - and note that iterating can sometimes have the effect of consuming the iterable (e.g. when working with streaming interfaces)