Skip to content

Commit

Permalink
Fixing small issues.
Browse files Browse the repository at this point in the history
  • Loading branch information
iviarcio committed Nov 8, 2018
1 parent 03b071d commit c8ef9da
Showing 1 changed file with 33 additions and 71 deletions.
104 changes: 33 additions & 71 deletions 18. Extras.ipynb
Expand Up @@ -43,7 +43,17 @@
"1. Um iterador é um objeto que gerencia uma iteração por meio de uma série de valores. Se uma variável ```i```, identifica um objeto iterador, então cada chamada para a função interna, ```next(i)```, produz um elemento subsequente da série subjacente, com uma exceção **StopIteration** levantada para indicar que não há elementos adicionais.\n",
"\n",
"2. Um iterável é um objeto, obj, que produz um iterador através da sintaxe ```iter(obj)```.\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Por essas definições, uma instância de uma lista é iterável, mas não é um iterador. Com ```data = [1, 2, 4, 8]```, não é legal chamar next(data). No entanto, um objeto iterador pode ser produzido com a sintaxe, ```i = iter(data)``` e, em seguida, cada chamada subseqüente para o ```next(i)``` retornará um elemento dessa lista. A sintaxe for-loop no Python simplesmente automatiza esse processo, criando um iterador para o iterável e, em seguida, chamando repetidamente o próximo elemento até capturar a exceção **StopIteration**."
]
},
Expand Down Expand Up @@ -95,24 +105,13 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 4, 5, 10, 20, 25, 50, 100]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"outputs": [],
"source": [
"def factors(n):\n",
" results = []\n",
Expand All @@ -137,7 +136,7 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "fragment"
Expand Down Expand Up @@ -177,7 +176,7 @@
},
{
"cell_type": "code",
"execution_count": 7,
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "slide"
Expand All @@ -194,25 +193,17 @@
},
{
"cell_type": "code",
"execution_count": 15,
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, ...\n"
]
}
],
"outputs": [],
"source": [
"obj = fibonacci()\n",
"n_fib = next(obj)\n",
"while n_fib < 1000:\n",
"while n_fib < 10000:\n",
" print(n_fib, end = \", \")\n",
" n_fib = next(obj)\n",
"print(\"...\")"
Expand Down Expand Up @@ -244,7 +235,7 @@
},
{
"cell_type": "code",
"execution_count": 18,
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "slide"
Expand All @@ -257,14 +248,14 @@
"\n",
" def __init__(self, sequence):\n",
" \"\"\"Create an iterator for the given sequence.\"\"\"\n",
" self. seq = sequence # keep a reference to the underlying data\n",
" self. k = -1 # will increment to 0 on first call to next\n",
" self.seq = sequence # keep a reference to the underlying data\n",
" self.k = -1 # will increment to 0 on first call to next\n",
"\n",
" def __next__(self):\n",
" \"\"\"Return the next element, or else raise StopIteration error.\"\"\"\n",
" self. k += 1 # advance to next index\n",
" if self. k < len(self. seq):\n",
" return(self. seq[self. k]) # return the data element\n",
" self.k += 1 # advance to next index\n",
" if self.k < len(self.seq):\n",
" return(self.seq[self.k]) # return the data element\n",
" else:\n",
" raise StopIteration() # there are no more elements\n",
"\n",
Expand All @@ -275,37 +266,19 @@
},
{
"cell_type": "code",
"execution_count": 20,
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2 4 6 8 10 "
]
},
{
"data": {
"text/plain": [
"<function print>"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"outputs": [],
"source": [
"my_list = [2, 4, 6, 8, 10]\n",
"my_iter = SequenceIterator(my_list)\n",
"for el in my_iter:\n",
" print(el, end=\" \")\n",
"print"
"print()"
]
},
{
Expand Down Expand Up @@ -343,7 +316,7 @@
},
{
"cell_type": "code",
"execution_count": 24,
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "slide"
Expand Down Expand Up @@ -385,22 +358,13 @@
},
{
"cell_type": "code",
"execution_count": 27,
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 2 4 6 8 \n",
"0 2 4\n"
]
}
],
"outputs": [],
"source": [
"for i in my_range(0, 10, 2):\n",
" print(i, end=\" \")\n",
Expand Down Expand Up @@ -773,7 +737,7 @@
"source": [
"## Plotando múltiplas curvas\n",
"\n",
"Uma tarefa comum de plotagem é comparar duas ou mais curvas, o que requer que várias curvas sejam desenhadas no mesmo gráfico. Suponha que queremos plotar as duas funções $f_{1}(t)=t^{2}exp(-t^{2})$ e $f_{2}(t)=t^{4}exp(-t^{2})$. Podemos, então, apenas emitir dois comandos de plotagem, um para cada função. Para tal, chamamos a função do matplotlib ```hold('on')``` após o primeiro comando de plotagem para indicar que os comandos de plotagem subsequentes devem desenhar as curvas no primeiro gráfico:"
"Uma tarefa comum de plotagem é comparar duas ou mais curvas, o que requer que várias curvas sejam desenhadas no mesmo gráfico. Suponha que queremos plotar as duas funções $f_{1}(t)=t^{2}exp(-t^{2})$ e $f_{2}(t)=t^{4}exp(-t^{2})$. Podemos, então, apenas emitir dois comandos de plotagem, um para cada função:"
]
},
{
Expand All @@ -799,12 +763,11 @@
"y1 = f1(t)\n",
"y2 = f2(t)\n",
"plot(t, y1, 'r-')\n",
"hold('on')\n",
"plot(t, y2, 'bo')\n",
"xlabel('t')\n",
"ylabel('y')\n",
"legend(['t^2*exp(-t^2)', 't^4*exp(-t^2)'])\n",
"title('Plotando duas curvas no mesmo gráfico)\n",
"title('Plotando duas curvas no mesmo gráfico')\n",
"show()"
]
},
Expand All @@ -816,12 +779,11 @@
}
},
"source": [
"Nesses comandos de plotagem, também especificamos o tipo de linha: r- significa linha vermelha (r) (-), enquanto bo significa um círculo azul (b) (o) em cada ponto de dados. As legendas de cada curva são especificadas em uma lista onde a seqüência de strings corresponde à seqüência de comandos de plotagem. Chamar a função ```hold('off')``` faz com que o próximo comando de plotagem crie um novo gráfico."
"Nesses comandos de plotagem, também especificamos o tipo de linha: r- significa linha vermelha (r) e tracejado (-), enquanto bo significa um círculo azul (b) e tracejado (o) em cada ponto de dados. As legendas de cada curva são especificadas em uma lista onde a seqüência de strings corresponde à seqüência de comandos de plotagem. Este [link](https://matplotlib.org/tutorials/index.html) contém guias detalhados para usar o Matplotlib. Ele é dividido em seções iniciante, intermediária e avançada, além de seções que abordam tópicos específicos."
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
Expand Down

0 comments on commit c8ef9da

Please sign in to comment.