DS4UX (Spring 2016)/Day 3 lecture: Difference between revisions
From CommunityData
(Replaced content with "TODO") |
No edit summary |
||
Line 1: | Line 1: | ||
== Review == | |||
===Lists=== | |||
* Use lists to store data where order matters. | |||
* Lists are indexed starting with 0. | |||
====List initialization==== | |||
>>> my_list = [] | |||
>>> my_list | |||
[] | |||
>>> your_list = ["a", "b", "c", 1, 2, 3] | |||
>>> your_list | |||
['a', 'b', 'c', 1, 2, 3] | |||
====Access and adding elements to a list==== | |||
>>> len(my_list) | |||
0 | |||
>>> my_list[0] | |||
Traceback (most recent call last): | |||
File "<stdin>", line 1, in <module> | |||
IndexError: list index out of range | |||
>>> my_list.append("Alice") | |||
>>> my_list | |||
['Alice'] | |||
>>> len(my_list) | |||
1 | |||
>>> my_list[0] | |||
'Alice' | |||
>>> my_list.insert(0, "Amy") | |||
>>> my_list | |||
['Amy', 'Alice'] | |||
>>> my_list = ['Amy', 'Alice'] | |||
>>> 'Amy' in my_list | |||
True | |||
>>> 'Bob' in my_list | |||
False | |||
====Changing elements in a list==== | |||
>>> your_list = [] | |||
>>> your_list.append("apples") | |||
>>> your_list[0] | |||
'apples' | |||
>>> your_list[0] = "bananas" | |||
>>> your_list | |||
['bananas'] | |||
====Slicing lists==== | |||
>>> her_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] | |||
>>> her_list[0] | |||
'a' | |||
>>> her_list[0:3] | |||
['a', 'b', 'c'] | |||
>>> her_list[:3] | |||
['a', 'b', 'c'] | |||
>>> her_list[-1] | |||
'h' | |||
>>> her_list[5:] | |||
['f', 'g', 'h'] | |||
>>> her_list[:] | |||
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] | |||
==== sorting lists ==== | |||
Use <code>.sort()</code> to sort a list: | |||
>>> names = ["Eliza", "Joe", "Henry", "Harriet", "Wanda", "Pat"] | |||
>>> names.sort() | |||
>>> names | |||
['Eliza', 'Harriet', 'Henry', 'Joe', 'Pat', 'Wanda'] | |||
==== Getting the maximum and minimum values from a list ==== | |||
>>> numbers = [0, 3, 10, -1] | |||
>>> max(numbers) | |||
10 | |||
>>> min(numbers) | |||
-1 | |||
====Strings are a lot like lists==== | |||
>>> my_string = "Hello World" | |||
>>> my_string[0] | |||
'H' | |||
>>> my_string[:5] | |||
'Hello' | |||
>>> my_string[6:] | |||
'World' | |||
>>> my_string = my_string[:6] + "Jessica" | |||
>>> my_string | |||
'Hello Jessica' | |||
* One big way in which strings are different from lists is that lists are mutable (you can change them), and strings are immutable (you can't change them). To "change" a string you have to make a copy: | |||
>>> h = "Hello" | |||
>>> h[0] = "J" | |||
Traceback (most recent call last): | |||
File "<stdin>", line 1, in <module> | |||
TypeError: 'str' object does not support item assignment | |||
>>> h = "J" + h[1:] | |||
>>> h | |||
'Jello' | |||
== New concepts == | |||
====Generating a list of numbers easily with <code>range()</code>==== | |||
<pre> | |||
>>> range(5) | |||
[0, 1, 2, 3, 4] | |||
>>> for i in range(5): | |||
... print "Hi" * i | |||
... | |||
Hi | |||
HiHi | |||
HiHiHi | |||
HiHiHiHi</pre> | |||
The <code>range()</code> function returns a list of numbers. This is handy for when you want to generate a list of numbers on the fly instead of creating the list yourself. | |||
>>> range(5) | |||
[0, 1, 2, 3, 4] | |||
Use <code>range</code> when you want to loop over a bunch of numbers in a list: | |||
>>> numbers = range(5) | |||
>>> for number in numbers: | |||
... print(number * number) | |||
... | |||
0 | |||
1 | |||
4 | |||
9 | |||
16 | |||
We could rewrite the above example like this: | |||
>>> for number in range(5): | |||
... print(number * number) | |||
... | |||
0 | |||
1 | |||
4 | |||
9 | |||
16 | |||
=== Get user input with <code>input()</code> === | |||
>>> for i in range(100): | |||
... my_input = input("Please type something> ") | |||
... if input == "Quit": | |||
... print("Goodbye!") | |||
... break | |||
... else: | |||
... print("You said: " + my_input) | |||
... | |||
Please type something> Hello | |||
You said: Hello | |||
Please type something> How are you? | |||
You said: How are you? | |||
Please type something> Quit | |||
Goodbye! | |||
>>> | |||
===Dictionaries=== | |||
* Use dictionaries to store key/value pairs. | |||
* Dictionaries do not guarantee ordering. | |||
* A given key can only have one value, but multiple keys can have the same value. | |||
====Initialization==== | |||
>>> my_dict = {} | |||
>>> my_dict | |||
{} | |||
>>> your_dict = {"Alice" : "chocolate", "Bob" : "strawberry", "Cara" : "mint chip"} | |||
>>> your_dict | |||
{'Bob': 'strawberry', 'Cara': 'mint chip', 'Alice': 'chocolate'} | |||
====Adding elements to a dictionary==== | |||
>>> your_dict["Dora"] = "vanilla" | |||
>>> your_dict | |||
{'Bob': 'strawberry', 'Cara': 'mint chip', 'Dora': 'vanilla', 'Alice': 'chocolate'} | |||
====Accessing elements of a dictionary==== | |||
>>> your_dict["Alice"] | |||
'chocolate' | |||
>>> your_dict.get("Alice") | |||
'chocolate' | |||
>>> your_dict["Eve"] | |||
Traceback (most recent call last): | |||
File "<stdin>", line 1, in <module> | |||
KeyError: 'Eve' | |||
>>> "Eve" in your_dict | |||
False | |||
>>> "Alice" in your_dict | |||
True | |||
>>> your_dict.get("Eve") | |||
>>> person = your_dict.get("Eve") | |||
>>> print(person) | |||
None | |||
>>> print(type(person)) | |||
<type 'NoneType'> | |||
>>> your_dict.get("Alice") | |||
'chocolate' | |||
====Changing elements of a dictionary==== | |||
>>> your_dict["Alice"] = "coconut" | |||
>>> your_dict | |||
{'Bob': 'strawberry', 'Cara': 'mint chip', 'Dora': 'vanilla', 'Alice': 'coconut'} | |||
====Types==== | |||
>>> type(my_dict) | |||
<type 'dict'> |
Revision as of 23:49, 10 April 2016
Review
Lists
- Use lists to store data where order matters.
- Lists are indexed starting with 0.
List initialization
>>> my_list = [] >>> my_list [] >>> your_list = ["a", "b", "c", 1, 2, 3] >>> your_list ['a', 'b', 'c', 1, 2, 3]
Access and adding elements to a list
>>> len(my_list) 0 >>> my_list[0] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range >>> my_list.append("Alice") >>> my_list ['Alice'] >>> len(my_list) 1 >>> my_list[0] 'Alice' >>> my_list.insert(0, "Amy") >>> my_list ['Amy', 'Alice']
>>> my_list = ['Amy', 'Alice'] >>> 'Amy' in my_list True >>> 'Bob' in my_list False
Changing elements in a list
>>> your_list = [] >>> your_list.append("apples") >>> your_list[0] 'apples' >>> your_list[0] = "bananas" >>> your_list ['bananas']
Slicing lists
>>> her_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] >>> her_list[0] 'a' >>> her_list[0:3] ['a', 'b', 'c'] >>> her_list[:3] ['a', 'b', 'c'] >>> her_list[-1] 'h' >>> her_list[5:] ['f', 'g', 'h'] >>> her_list[:] ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
sorting lists
Use .sort()
to sort a list:
>>> names = ["Eliza", "Joe", "Henry", "Harriet", "Wanda", "Pat"] >>> names.sort() >>> names ['Eliza', 'Harriet', 'Henry', 'Joe', 'Pat', 'Wanda']
Getting the maximum and minimum values from a list
>>> numbers = [0, 3, 10, -1] >>> max(numbers) 10 >>> min(numbers) -1
Strings are a lot like lists
>>> my_string = "Hello World" >>> my_string[0] 'H' >>> my_string[:5] 'Hello' >>> my_string[6:] 'World' >>> my_string = my_string[:6] + "Jessica" >>> my_string 'Hello Jessica'
- One big way in which strings are different from lists is that lists are mutable (you can change them), and strings are immutable (you can't change them). To "change" a string you have to make a copy:
>>> h = "Hello" >>> h[0] = "J" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment >>> h = "J" + h[1:] >>> h 'Jello'
New concepts
Generating a list of numbers easily with range()
>>> range(5) [0, 1, 2, 3, 4] >>> for i in range(5): ... print "Hi" * i ... Hi HiHi HiHiHi HiHiHiHi
The range()
function returns a list of numbers. This is handy for when you want to generate a list of numbers on the fly instead of creating the list yourself.
>>> range(5) [0, 1, 2, 3, 4]
Use range
when you want to loop over a bunch of numbers in a list:
>>> numbers = range(5) >>> for number in numbers: ... print(number * number) ... 0 1 4 9 16
We could rewrite the above example like this:
>>> for number in range(5): ... print(number * number) ... 0 1 4 9 16
Get user input with input()
>>> for i in range(100): ... my_input = input("Please type something> ") ... if input == "Quit": ... print("Goodbye!") ... break ... else: ... print("You said: " + my_input) ... Please type something> Hello You said: Hello Please type something> How are you? You said: How are you? Please type something> Quit Goodbye! >>>
Dictionaries
- Use dictionaries to store key/value pairs.
- Dictionaries do not guarantee ordering.
- A given key can only have one value, but multiple keys can have the same value.
Initialization
>>> my_dict = {} >>> my_dict {} >>> your_dict = {"Alice" : "chocolate", "Bob" : "strawberry", "Cara" : "mint chip"} >>> your_dict {'Bob': 'strawberry', 'Cara': 'mint chip', 'Alice': 'chocolate'}
Adding elements to a dictionary
>>> your_dict["Dora"] = "vanilla" >>> your_dict {'Bob': 'strawberry', 'Cara': 'mint chip', 'Dora': 'vanilla', 'Alice': 'chocolate'}
Accessing elements of a dictionary
>>> your_dict["Alice"] 'chocolate' >>> your_dict.get("Alice") 'chocolate'
>>> your_dict["Eve"] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'Eve' >>> "Eve" in your_dict False >>> "Alice" in your_dict True >>> your_dict.get("Eve") >>> person = your_dict.get("Eve") >>> print(person) None >>> print(type(person)) <type 'NoneType'> >>> your_dict.get("Alice") 'chocolate'
Changing elements of a dictionary
>>> your_dict["Alice"] = "coconut" >>> your_dict {'Bob': 'strawberry', 'Cara': 'mint chip', 'Dora': 'vanilla', 'Alice': 'coconut'}
Types
>>> type(my_dict) <type 'dict'>