Python 进修笔记(一)Data type
添加时间:2013-5-9 点击量:
Data types:
Sequence types: (有序的类型)
- strings
- tuples
- lists
Immutable types: (不成变的类型)
- numbers
- strings
- tuples
#String:
text = Lists and Strings can be accessed via indices!
String 的几种默示法:
• Single quotes: spam
• Double quotes: spam
• Triple quotes: ... spam ..., ... spam ...
• Escape sequences: s\tp\na\0m
• Raw strings: rC:\new\test.spm
>>> mantra = Always look
... on the bright
... side of life.
>>>
>>> mantra
Always look\n on the bright\nside of life.
>>> print(mantra)
Always look
on the bright
side of life.
反转字符串
>>> S = hello
>>> S[::−1]
olleh
str and repr: (convert number to string)
>>> print(str(b),repr(a))
b a
>>> print(str(42),repr(42))
42 42
>>> print(str(42),repr(42))
42 42
character to ASCII:
>>> ord(s)
115
>>> chr(115)
s
如何改变String :
>>> S = S + SPAM! # To change a string, make a new one
>>> S
spamSPAM!
>>> S = splot
>>> S = S.replace(pl, pamal)
>>> S
spamalot
Format:
>>> That is %d %s bird! % (1, dead) # Format expression
That is 1 dead bird!
>>> That is {0} {1} bird!.format(1, dead) # Format method in 2.6 and 3.0
That is 1 dead bird!
#List []
L = [London, Paris, Strasbourg, Zurich]
The main properties of Python lists:
- They are ordered
- The contain arbitrary objects
- Elements of a list can be accessed by an index
- They are arbitrarily nestable, i.e. they can contain other lists as sublists
- Variable size
- They mutable, i.e. they elements of a list can be changed
简单的copy会改变本来list的值,若是不想改变本来的值,则须要深度copy (deepcopy):
>>> lst1 = [a,b,[ab,ba]]
>>> lst2 = lst1[:]
>>> lst2[0] = c
>>> lst2[2][1] = d
>>> print(lst1)
[a, b, [ab, d]]
Deepcopy:
>>> copy import deepcopy
>>> lst1 = [a,b,[ab,ba]]
>>> lst2 = deepcopy(lst1)
>>> lst2[2][1] = d
>>> lst2[0] = c
>>> print(lst2)
[c, b, [ab, d]]
>>> print(lst1)
[a, b, [ab, ba]]
string to list:
>>> S = spammy
>>> L = list(S)
>>> L
[s, p, a, m, m, y]
Operation:
>>> s = Test List
>>> l = list(s)
>>> l
[T, e, s, t, , L, i, s, t]
>>> l.append(h)
>>> l
[T, e, s, t, , L, i, s, t, h]
>>> l.extend([a,b])
>>> l
[T, e, s, t, , L, i, s, t, h, a, b]
>>> l.(2,c)
>>> l
[T, e, c, s, t, , L, i, s, t, h, a, b]
>>> del l[2]
>>> l
[T, e, s, t, , L, i, s, t, h, a, b]
>>> l.remove(t)
>>> l
[T, e, s, , L, i, s, t, h, a, b]
#remove all matched characters
>>> for i in l:
if i ==s:
l.remove(i)
>>> l
[T, e, , L, i, h, a, b]
>>> L = [x2 for x in range(5)]
>>> L
[0, 1, 4, 9, 16]
排序:
>>> L = [abc, ABD, aBe]
>>> L.sort() # Sort with mixed case
>>> L
[ABD, aBe, abc]
>>> L = [abc, ABD, aBe]
>>> L.sort(key=str.lower) # Normalize to lowercase
>>> L
[abc, ABD, aBe]
>>>
>>> L = [abc, ABD, aBe]
>>> L.sort(key=str.lower, reverse=True) # Change sort order
>>> L
[aBe, ABD, abc]
#Tuple ()
tup1 = (physics, chemistry, 1997, 2000);
A tuple is an immutable list:
- Tuples are faster than lists.
- If you know, that some data doesnt have to be changed, you should use tuples instead of lists, because this protect your data against accidental changes to these data.
- Tuples can be used as keys in dictionaries, while lists cant.
Tuple 语法:Commas and parentheses
>>> x = (40) # An integer!
>>> x
40
>>> y = (40,) # A tuple containing an integer
>>> y
(40,)
Tuple to list:
>>> T = (1, 2, 3, 4, 5)
>>> L = [x + 20 for x in T]
>>> L
[21, 22, 23, 24, 25]
>>> T = (1, 2, 3, 2, 4, 2)
>>> T.index(2,3) #从index3开端找2
3
tuple immutability applies only to the top level of the ruple itself.
>>> T = (1, [2, 3], 4)
>>> T[1] = spam # This fails: cant change tuple itself
TypeError: object doesnt support item assignment
>>> T[1][0] = spam # This works: can change mutables inside
>>> T
(1, [spam, 3], 4)
#Set {}
- an unordered collection
- unique value
- like keys of valuesless dictionary, but supports extra operations
Can use to remove duplicates:
>>> L = [1, 2, 1, 3, 2, 4, 5]
>>> set(L)
{1, 2, 3, 4, 5}
>>> L = list(set(L)) # Remove duplicates
>>> L
[1, 2, 3, 4, 5]
Extra operations:
>>> engineers = {bob, sue, ann, vic}
>>> managers = {tom, sue}
>>> engineers & managers
{sue}
>>> engineers | managers
{ann, tom, bob, vic, sue}
>>> engineers - managers
{ann, vic, bob}
>>> managers ^ engineers # Who is in one but not both?
{ann, tom, vic, bob}
#Dictionary {key:value}
- Sequence operations don’t work.
- Keys need not always be strings.
- Assigning to new indexes adds entries.
>>> food = {ham : yes, egg : yes, spam : no }
>>> D = {spam: 2, ham: 1, eggs: 3}
>>> list(D.values())
[3, 1, 2]
>>> list(D.items())
[(eggs, 3), (ham, 1), (spam, 2)]
Using dictionaries as records:
>>> mel = {name: Mark,
jobs: [trainer, writer],
web: www.rmi.net/˜lutz,
home: {state: CO, zip:80513}}
>>> mel[jobs]
[trainer, writer]
>>> mel[jobs][1]
writer
>>> mel[home][zip]
80513
Ways to make dictionaries:
{name: mel, age: 45} # Traditional literal expression
D = {} # Assign by keys dynamically
D[name] = mel
D[age] = 45
dict(name=mel, age=45) # dict keyword argument form
dict([(name, mel), (age, 45)]) # dict key/value tuples form
>>> dict.keys([a, b], 0)
{a: 0, b: 0}
Turn list to dictionary:
>>> list(zip([a, b, c], [1, 2, 3])) # Zip together keys and values
[(a, 1), (b, 2), (c, 3)]
>>> D = dict(zip([a, b, c], [1, 2, 3])) # Make a dict zip result
>>> D
{a: 1, c: 3, b: 2}
#new method in 3.0
>>> D = {k: v for (k, v) in zip([a, b, c], [1, 2, 3])}
>>> D
{a: 1, c: 3, b: 2}
>>> D = {c.lower(): c + ! for c in [SPAM, EGGS, HAM]}
>>> D
{eggs: EGGS!, ham: HAM!, spam: SPAM!}
Sort:
>>> D
{a: 1, c: 3, b: 2} # Better yet, sort the dict directly
>>> for k in sorted(D): print(k, D[k]) # dict iterators return keys
...
a 1
b 2
c 3
真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》
Data types:
Sequence types: (有序的类型)
- strings
- tuples
- lists
Immutable types: (不成变的类型)
- numbers
- strings
- tuples
#String:
text = Lists and Strings can be accessed via indices!
String 的几种默示法:
• Single quotes: spam
• Double quotes: spam
• Triple quotes: ... spam ..., ... spam ...
• Escape sequences: s\tp\na\0m
• Raw strings: rC:\new\test.spm
>>> mantra = Always look
... on the bright
... side of life.
>>>
>>> mantra
Always look\n on the bright\nside of life.
>>> print(mantra)
Always look
on the bright
side of life.
反转字符串
>>> S = hello
>>> S[::−1]
olleh
str and repr: (convert number to string)
>>> print(str(b),repr(a))
b a
>>> print(str(42),repr(42))
42 42
>>> print(str(42),repr(42))
42 42
character to ASCII:
>>> ord(s)
115
>>> chr(115)
s
如何改变String :
>>> S = S + SPAM! # To change a string, make a new one
>>> S
spamSPAM!
>>> S = splot
>>> S = S.replace(pl, pamal)
>>> S
spamalot
Format:
>>> That is %d %s bird! % (1, dead) # Format expression
That is 1 dead bird!
>>> That is {0} {1} bird!.format(1, dead) # Format method in 2.6 and 3.0
That is 1 dead bird!
#List []
L = [London, Paris, Strasbourg, Zurich]
The main properties of Python lists:
- They are ordered
- The contain arbitrary objects
- Elements of a list can be accessed by an index
- They are arbitrarily nestable, i.e. they can contain other lists as sublists
- Variable size
- They mutable, i.e. they elements of a list can be changed
简单的copy会改变本来list的值,若是不想改变本来的值,则须要深度copy (deepcopy):
>>> lst1 = [a,b,[ab,ba]]
>>> lst2 = lst1[:]
>>> lst2[0] = c
>>> lst2[2][1] = d
>>> print(lst1)
[a, b, [ab, d]]
Deepcopy:
>>> copy import deepcopy
>>> lst1 = [a,b,[ab,ba]]
>>> lst2 = deepcopy(lst1)
>>> lst2[2][1] = d
>>> lst2[0] = c
>>> print(lst2)
[c, b, [ab, d]]
>>> print(lst1)
[a, b, [ab, ba]]
string to list:
>>> S = spammy
>>> L = list(S)
>>> L
[s, p, a, m, m, y]
Operation:
>>> s = Test List
>>> l = list(s)
>>> l
[T, e, s, t, , L, i, s, t]
>>> l.append(h)
>>> l
[T, e, s, t, , L, i, s, t, h]
>>> l.extend([a,b])
>>> l
[T, e, s, t, , L, i, s, t, h, a, b]
>>> l.(2,c)
>>> l
[T, e, c, s, t, , L, i, s, t, h, a, b]
>>> del l[2]
>>> l
[T, e, s, t, , L, i, s, t, h, a, b]
>>> l.remove(t)
>>> l
[T, e, s, , L, i, s, t, h, a, b]
#remove all matched characters
>>> for i in l:
if i ==s:
l.remove(i)
>>> l
[T, e, , L, i, h, a, b]
>>> L = [x2 for x in range(5)]
>>> L
[0, 1, 4, 9, 16]
排序:
>>> L = [abc, ABD, aBe]
>>> L.sort() # Sort with mixed case
>>> L
[ABD, aBe, abc]
>>> L = [abc, ABD, aBe]
>>> L.sort(key=str.lower) # Normalize to lowercase
>>> L
[abc, ABD, aBe]
>>>
>>> L = [abc, ABD, aBe]
>>> L.sort(key=str.lower, reverse=True) # Change sort order
>>> L
[aBe, ABD, abc]
#Tuple ()
tup1 = (physics, chemistry, 1997, 2000);
A tuple is an immutable list:
- Tuples are faster than lists.
- If you know, that some data doesnt have to be changed, you should use tuples instead of lists, because this protect your data against accidental changes to these data.
- Tuples can be used as keys in dictionaries, while lists cant.
Tuple 语法:Commas and parentheses
>>> x = (40) # An integer!
>>> x
40
>>> y = (40,) # A tuple containing an integer
>>> y
(40,)
Tuple to list:
>>> T = (1, 2, 3, 4, 5)
>>> L = [x + 20 for x in T]
>>> L
[21, 22, 23, 24, 25]
>>> T = (1, 2, 3, 2, 4, 2)
>>> T.index(2,3) #从index3开端找2
3
tuple immutability applies only to the top level of the ruple itself.
>>> T = (1, [2, 3], 4)
>>> T[1] = spam # This fails: cant change tuple itself
TypeError: object doesnt support item assignment
>>> T[1][0] = spam # This works: can change mutables inside
>>> T
(1, [spam, 3], 4)
#Set {}
- an unordered collection
- unique value
- like keys of valuesless dictionary, but supports extra operations
Can use to remove duplicates:
>>> L = [1, 2, 1, 3, 2, 4, 5]
>>> set(L)
{1, 2, 3, 4, 5}
>>> L = list(set(L)) # Remove duplicates
>>> L
[1, 2, 3, 4, 5]
Extra operations:
>>> engineers = {bob, sue, ann, vic}
>>> managers = {tom, sue}
>>> engineers & managers
{sue}
>>> engineers | managers
{ann, tom, bob, vic, sue}
>>> engineers - managers
{ann, vic, bob}
>>> managers ^ engineers # Who is in one but not both?
{ann, tom, vic, bob}
#Dictionary {key:value}
- Sequence operations don’t work.
- Keys need not always be strings.
- Assigning to new indexes adds entries.
>>> food = {ham : yes, egg : yes, spam : no }
>>> D = {spam: 2, ham: 1, eggs: 3}
>>> list(D.values())
[3, 1, 2]
>>> list(D.items())
[(eggs, 3), (ham, 1), (spam, 2)]
Using dictionaries as records:
>>> mel = {name: Mark,
jobs: [trainer, writer],
web: www.rmi.net/˜lutz,
home: {state: CO, zip:80513}}
>>> mel[jobs]
[trainer, writer]
>>> mel[jobs][1]
writer
>>> mel[home][zip]
80513
Ways to make dictionaries:
{name: mel, age: 45} # Traditional literal expression
D = {} # Assign by keys dynamically
D[name] = mel
D[age] = 45
dict(name=mel, age=45) # dict keyword argument form
dict([(name, mel), (age, 45)]) # dict key/value tuples form
>>> dict.keys([a, b], 0)
{a: 0, b: 0}
Turn list to dictionary:
>>> list(zip([a, b, c], [1, 2, 3])) # Zip together keys and values
[(a, 1), (b, 2), (c, 3)]
>>> D = dict(zip([a, b, c], [1, 2, 3])) # Make a dict zip result
>>> D
{a: 1, c: 3, b: 2}
#new method in 3.0
>>> D = {k: v for (k, v) in zip([a, b, c], [1, 2, 3])}
>>> D
{a: 1, c: 3, b: 2}
>>> D = {c.lower(): c + ! for c in [SPAM, EGGS, HAM]}
>>> D
{eggs: EGGS!, ham: HAM!, spam: SPAM!}
Sort:
>>> D
{a: 1, c: 3, b: 2} # Better yet, sort the dict directly
>>> for k in sorted(D): print(k, D[k]) # dict iterators return keys
...
a 1
b 2
c 3
真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》