Tenhle hnus je nějaká forma unique nebo distinct?
.filter((num, index, nums) => nums.indexOf(num) == index)
Ano, to je unique, a neni to Lua, ale Javascript - to je takovy ten jazyk, ktery brzo prevalcuje Python, a ktera ma dneska spousta Javistu v zaloze
Tvl tady Pythonisti ani neznaji monady, a pritom my to v Jave pouzivame uz od verze 1.8
Tydlencty "monady" mame v Pythonu odjakziva.
from dataclasses import dataclass
from functools import reduce
from typing import List
@dataclass
class Contact:
kozy: int
iq: int
phoneNumbers: List[str]
CONTACTS = [
Contact(
kozy = 2,
iq = 100,
phoneNumbers = [
'123456789',
],
),
Contact(
kozy = 4,
iq = 150,
phoneNumbers = [
'113456789',
'133456789',
],
),
Contact(
kozy = 5,
iq = 130,
phoneNumbers = [
'113456789',
'213456789',
],
),
]
if __name__ == '__main__':
numbers = set(
reduce(
(lambda x, y: x + y), [
c.phoneNumbers
for c in CONTACTS
if c.kozy > 3 and c.iq > 100
], []
)
)
print(numbers)
to reduce bije do očí. Proč používáte reduce pro sčítání (spojování), když to stejné dělá sum, případně itertools.chain?
numbers = set(
sum((c.phoneNumbers for c in CONTACTS if c.kozy > 3 and c.iq > 100), [])
)
ještě drobnost, když už používáte reduce, funkce pro běžné operace jsou v knihovně operators, místo (lambda x, y: x + y), můžete použít operators.add. Lambdy jsou antipattern.