Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
214 changes: 192 additions & 22 deletions lab-python-lambda-map-reduce-filter.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 1,
"id": "08463071-9351-4d49-8d29-4fcb817fb177",
"metadata": {},
"outputs": [],
Expand Down Expand Up @@ -94,12 +94,36 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 2,
"id": "0781335d-39cf-403d-b86a-ca908a09fe55",
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Créditos: [2500, 850, 1500, 5000, 1000]\n",
"Débitos: [(-1200, 'debit'), (-100, 'debit'), (-250, 'debit'), (-300, 'debit'), (-850, 'debit')]\n"
]
}
],
"source": [
"# your code goes here"
"# your code goes here\n",
"\n",
"# Lista de transacciones\n",
"transactions = [(-1200, 'debit'), (2500, 'credit'), (-100, 'debit'), (850, 'credit'), \n",
" (-250, 'debit'), (1500, 'credit'), (-300, 'debit'), (5000, 'credit'), \n",
" (-850, 'debit'), (1000, 'credit')]\n",
"\n",
"# Crear la lista de créditos (transacciones de tipo 'credit')\n",
"credits = [amount for amount, type in transactions if type == 'credit']\n",
"\n",
"# Crear la lista de débitos (transacciones de tipo 'debit') usando filter()\n",
"debits = list(filter(lambda transaction: transaction[1] == 'debit', transactions))\n",
"\n",
"# Mostrar las listas resultantes\n",
"print(\"Créditos:\", credits)\n",
"print(\"Débitos:\", debits)"
]
},
{
Expand All @@ -124,12 +148,37 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 3,
"id": "25073469-7258-4fc6-b0a0-ef8ea57688fe",
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Débitos ordenados en orden descendente: [(-100, 'debit'), (-250, 'debit'), (-300, 'debit'), (-850, 'debit'), (-1200, 'debit')]\n"
]
}
],
"source": [
"# your code goes here"
"# your code goes here\n",
"\n",
"# Lista de transacciones\n",
"transactions = [(-1200, 'debit'), (2500, 'credit'), (-100, 'debit'), (850, 'credit'), \n",
" (-250, 'debit'), (1500, 'credit'), (-300, 'debit'), (5000, 'credit'), \n",
" (-850, 'debit'), (1000, 'credit')]\n",
"\n",
"# Crear la lista de débitos (transacciones de tipo 'debit') usando filter()\n",
"debits = list(filter(lambda transaction: transaction[1] == 'debit', transactions))\n",
"\n",
"# Definir la función lambda para ordenar en orden descendente por el monto\n",
"sort_descending = lambda t1, t2: t1[0] > t2[0]\n",
"\n",
"# Ordenar la lista de débitos en orden descendente usando sorted() y la función lambda\n",
"sorted_debits = sorted(debits, key=lambda x: x[0], reverse=True)\n",
"\n",
"# Mostrar la lista ordenada\n",
"print(\"Débitos ordenados en orden descendente:\", sorted_debits)"
]
},
{
Expand Down Expand Up @@ -158,7 +207,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 5,
"id": "e1de9d03-f029-4e2e-9733-ae92e3de7527",
"metadata": {},
"outputs": [],
Expand All @@ -169,12 +218,44 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 6,
"id": "2f253b7e-5300-4819-b38f-9fc090554f51",
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saldos después de un año con interés: [105.0, 52.5, -25, 1050.0, -10]\n"
]
}
],
"source": [
"# your code goes here"
"# your code goes here\n",
"\n",
"\n",
"\n",
"# Función para calcular el saldo después de un año con interés\n",
"def calculate_balance_with_interest(balance, interest_rate=0.05):\n",
" \"\"\"\n",
" Calcula el saldo después de un año con interés.\n",
"\n",
" Parameters:\n",
" balance (float): El saldo actual de la cuenta.\n",
" interest_rate (float): La tasa de interés anual (por defecto 0.05).\n",
"\n",
" Returns:\n",
" float: El saldo después de un año con interés.\n",
" \"\"\"\n",
" if balance < 0: # Si el saldo es negativo, no se aplica interés\n",
" return balance\n",
" return balance * (1 + interest_rate)\n",
"\n",
"# Aplicar la función a la lista de saldos usando map()\n",
"updated_balances = list(map(calculate_balance_with_interest, balances))\n",
"\n",
"# Mostrar la lista de saldos actualizados\n",
"print(\"Saldos después de un año con interés:\", updated_balances)"
]
},
{
Expand All @@ -195,7 +276,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 7,
"id": "69e24c3b-385e-44d6-a8ed-705a3f58e696",
"metadata": {},
"outputs": [],
Expand All @@ -209,12 +290,47 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 8,
"id": "0906a9b0-d567-4786-96f2-5755611b885e",
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cuentas actualizadas después de un año con interés: [{'balance': 1020.0, 'interest_rate': 0.02}, {'balance': 2020.0, 'interest_rate': 0.01}, {'balance': 515.0, 'interest_rate': 0.03}]\n"
]
}
],
"source": [
"# your code goes here\n"
"# your code goes here\n",
"\n",
"\n",
"# Función para calcular el saldo después de un año con interés\n",
"def calculate_balance_with_interest(account):\n",
" \"\"\"\n",
" Calcula el saldo después de un año con interés.\n",
"\n",
" Parameters:\n",
" account (dict): Un diccionario que contiene 'balance' y 'interest_rate'.\n",
"\n",
" Returns:\n",
" dict: Un diccionario con el saldo actualizado.\n",
" \"\"\"\n",
" balance = account['balance']\n",
" interest_rate = account['interest_rate']\n",
" \n",
" # Calcular el saldo después de un año con interés\n",
" updated_balance = balance * (1 + interest_rate)\n",
" \n",
" # Devolver un nuevo diccionario con el saldo actualizado\n",
" return {'balance': updated_balance, 'interest_rate': interest_rate}\n",
"\n",
"# Aplicar la función a la lista de cuentas usando map()\n",
"updated_accounts = list(map(calculate_balance_with_interest, accounts))\n",
"\n",
"# Mostrar la lista de cuentas actualizadas\n",
"print(\"Cuentas actualizadas después de un año con interés:\", updated_accounts)\n"
]
},
{
Expand Down Expand Up @@ -243,14 +359,34 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 9,
"id": "6284dbd3-e117-411e-8087-352be6deaed4",
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Total de saldos negativos: -35\n"
]
}
],
"source": [
"from functools import reduce\n",
"\n",
"# your code goes here"
"# your code goes here\n",
"\n",
"# Lista de saldos actualizados después de aplicar un interés del 5%\n",
"updated_balances = [105.0, 52.5, -25, 1050.0, -10]\n",
"\n",
"# Filtrar los saldos negativos usando filter()\n",
"negative_balances = list(filter(lambda balance: balance < 0, updated_balances))\n",
"\n",
"# Calcular el total de los saldos negativos usando reduce()\n",
"total_negative_balances = reduce(lambda x, y: x + y, negative_balances, 0)\n",
"\n",
"# Mostrar el total de los saldos negativos\n",
"print(\"Total de saldos negativos:\", total_negative_balances)\n"
]
},
{
Expand All @@ -273,24 +409,58 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 10,
"id": "da2264b5-298e-4b45-99df-852b94e90d15",
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Saldos restantes después de los retiros: [650, 1600, 275]\n"
]
}
],
"source": [
"accounts = [\n",
" {'balance': 1000, 'withdrawals': [100, 50, 200]},\n",
" {'balance': 2000, 'withdrawals': [300, 100]},\n",
" {'balance': 500, 'withdrawals': [50, 100, 75]},\n",
"]\n",
"\n",
"# your code goes here\n"
"# your code goes here\n",
"\n",
"\n",
"# Función para calcular el saldo restante después de restar los retiros\n",
"def calculate_balance(account):\n",
" \"\"\"\n",
" Calcula el saldo restante después de restar todos los retiros.\n",
"\n",
" Parameters:\n",
" account (dict): Un diccionario que contiene 'balance' y 'withdrawals'.\n",
"\n",
" Returns:\n",
" float: El saldo restante después de restar los retiros.\n",
" \"\"\"\n",
" balance = account['balance']\n",
" withdrawals = account['withdrawals']\n",
" \n",
" # Restar todos los retiros del saldo\n",
" remaining_balance = balance - sum(withdrawals)\n",
" \n",
" return remaining_balance\n",
"\n",
"# Aplicar la función a la lista de cuentas usando map()\n",
"remaining_balances = list(map(calculate_balance, accounts))\n",
"\n",
"# Mostrar la lista de saldos restantes\n",
"print(\"Saldos restantes después de los retiros:\", remaining_balances)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"display_name": "base",
"language": "python",
"name": "python3"
},
Expand Down