0%

Python基础学习一

1,python的基本数据类型

python是一门很灵活的语言,俗称”胶水语言”。”人生苦短,我用python”。

python之禅

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

python的基本数据类型:int、float(单精度和双精度都是用float表示,不像java一样有float和double之分)。

2,python的数据结构

列表

比如[1,2,3]是一个列表,用type([1,2,3])函数会输出 class ‘list’,class表示是什么类型,这里说明[1,2,3]是一个列表,列表可以嵌套:[[1,2,3],[‘123’],[True]]也是一个列表,元素可以是不同的类型。

元组

python有很多种方法可以表示元组,先学习其中一种:(1,2,3,4),(1,2,’True’)都是元组。type((1,2,3))得出数据类型是 tuple,tuple就是元组的意思。

为什么是 int

1
2
>>> type((1))
<class 'int'>

以上按照我们理解应该是一个元组,只有一个元素,为什么不是呢?而是int型呢?什么原因?再看:

1
2
>>> type(('helo'))
<class 'str'>

其实括号还有运算的作用,比如 (1+1)*2,我们都知道显示1和1相加再乘以2,因为括号的优先级在这里高于乘号,编译器怎么猜测我们是想运算还是定义一个元组呢,这时候编译器就不知道了,所以python编译器硬性规定,括号只有一个元素的这种情况为运算,不是元组。那怎么定义只有一个元素的元组呢?,(1,):加一个逗号,假装后面还有一个元素。

1
2
>>> type((1,))
<class 'tuple'>

这个时候type函数返回的就是tuple类型了。
定义元素为空的元组,()。括号里面什么也没有。

1
2
>>> type(())
<class 'tuple'>

可以看到 “()”是一个元组,只不过里面没有元素。
type([1])返回什么呢?返回list,是列表类型。

1
2
>>> type([1])
<class 'list'>

元组也叫序列,str、tuple、list都是序列,序列的共有操作:

  • ‘hello world’[2] :序列的每个元素都会分配一个序号(或者角标,它有顺序)
  • 切片:[1,2,3,4,5][0:3];[1,2,3,4,5][-1:]; ‘hello world’[0:8:2],这里有三个数,什么意思?
  • 是否包含某个元素:3 in [1,2,3,4,5],返回True,10 in [1,2,9],返回False,3 not in [1,2,3],返回False。
  • 求元素长度,len([1,2,3,4,5,6]),返回6;len(‘hello world’),返回11,max([1,2,3,4,5,7]),求最大值,返回7,min([1,2,7]),求最小值,返回1;max(‘helloowrld’),返回’w’,min(‘helloowrld’),返回’d’,也是ASCII码最大最小。如果是代码min(‘helloowrld’),就输出空格,如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
>>> 3 in [1,2,3]
True

>>> 10 in [1,2,9]
False

>>> 3 not in [1,2,3]
False

>>> len([1,2,3,4,5,6])
6

>>> len('hello world')
11

>>> max([1,2,3,4,5,7])
7

>>> min([1,2,7])
1

>>> max('helloowrld')
'w'

>>> min('helloowrld')
'd'

>>> min('hello owrld')
' '

ord()函数可以求字符的ASCII码,

1
2
3
4
5
>>> ord('a')
97

>>> ord(' ')
32

3,数据结构之set

集合很重要的一个特性:无序。

定义

{1,2,3,4,5,6}是一个集合

1
2
>>> type({1,2,3,4,5,6})
<class 'set'>
  • 集合是无序的,没有角标,也就是没有索引,和序列的操作很不同。
    1
    2
    3
    4
    5
    >>> {1, 2}[1]
    Traceback (most recent call last):
    File "<pyshell#28>", line 1, in <module>
    {1, 2}[1]
    TypeError: 'set' object does not support indexing

如上,如果想对集合类似于序列的操作(在这里是找出第二个元素编译亲会报错,不支持索引,这是集合和序列的一大区别)

  • 无重复元素。
    1
    2
    >>> {1,1,2,2}
    {1, 2}

集合基本操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
>>> len({1,2,3})
3

>>> 1 in {1,2,4}
True

>>> 1 not in {1,2,4}
False

从一个集合中去除另一个集合的元素:
>>> {1,2,3,4,5,6}-{1,2,5,6}
{3, 4}
得到{3,4},注意这里"-不是减法操作,而是求两个集合的差集。

{1,2,3,4,5,6} {4,5},求交集
>>> {1,2,3,4,5,6}&{4,5}
{4, 5}

{1,2,3,4,5,6} {3,4,7},求并集:
>>> {1,2,3,4,5,6}|{3,4,7}
{1, 2, 3, 4, 5, 6, 7}

定义一个空的集合,需要用到set关键字:
>>> type(set())
<class 'set'>
>>> len(set())
0
set集合长度为0

字典dict

字典的key,字典的value。
通过key查询value。字典可以有很多个key和value。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{key1:value1,key2:value2....}:字典的定义,它和set有什么区别?在于每一个元素的定义,set单个,字典是键值对。

>>> type({1:4,2:2})
<class 'dict'>
字典的访问方式:
>>> {'Q':'新月打击','w':'苍白之瀑','R':'月神冲刺'}['Q']
'新月打击'

>>> {'Q':'新月打击','Q':'月之','w':'苍白之瀑','R':'月神冲刺'}['Q']
'月之'

>>> {'Q':'新月打击','Q':'月之','w':'苍白之瀑','R':'月神冲刺'}
{'Q': '月之', 'w': '苍白之瀑', 'R': '月神冲刺'}
字典没有重复的键,

>>> {1:'新月打击','1':'月之','w':'苍白之瀑','R':'月神冲刺'}
{1: '新月打击', '1': '月之', 'w': '苍白之瀑', 'R': '月神冲刺'}
key不一定是字符串,也可以是数字,但是它必须是不可变的类型(int、str);value:str、int、float、list、set、dict。value几乎可以是任意的数据类型。

>>> {[1,2]: '新月打击', '1': '月之', 'w': '苍白之瀑', 'R': '月神冲刺'}
Traceback (most recent call last):
File "<pyshell#57>", line 1, in <module>
{[1,2]: '新月打击', '1': '月之', 'w': '苍白之瀑', 'R': '月神冲刺'}
TypeError: unhashable type: 'list'
key不能为[1,2],也就是说不能是列表,那么元组呢?

>>> {(1,2): '新月打击', '1': '月之', 'w': '苍白之瀑', 'R': '月神冲刺'}
{(1, 2): '新月打击', '1': '月之', 'w': '苍白之瀑', 'R': '月神冲刺'}
可以是元组。以上代码可以通过运行。

空的字典怎么定义?
>>> type({})
<class 'dict'>

总结

python基本数据类型图解:


python基本数据类型

字符串不可变,列表可变。