在python3中,基础的数据容器有:字符串,列表,元组,集合,字典。下面我将一一介绍这几种常用的容器类型
1.字符串(str)
这应该是见得最多的了,无论什么语言都是,我对其他语言并没有什么了解,所有只能说说在python中的字符串。
(1).字符串的语法格式是:单引号('xxx'),双引号(''xxx''),三引号('''xxx''')将内容包起来,如s = 'abc',s = ''abc'',需要注意,三引号一般不会经常用,它一般会用在函数的文档字符串中,这个后面讲函数再说。
(2).字符串是一个序列,何为序列?就是有序排列,“有序”是一个重要的特征,需要注意。且字符串是不可变序列,何为不可变?就是一旦定义好了,内部的元素就不可以再增加,删除和修改。
(3).字符串可以运算,但是仅仅可以‘+’和‘*’,这个举个简单的例子立刻就能明白:
a = ‘1a2b3c’ b = ‘abc’ c = a+b c = ‘1a2b3cabc’ 也可以这样写:a +=b a=‘1a2b3cabc’
a = ‘1a2b3c’ c = a*2 c = ‘1a2b3c1a2b3c’ 也可以这样写:a *=2 a = ‘1a2b3c1a2b3c’
需要注意,其实在python内部,+ 和 += 是有区别的,执行+ 只有add方法,而+= 有iadd 和add方法,是不一样的
(4).字符串可以按照下标来取值,如 a = ‘abc’ a[0] = ‘a’ a[1] = ‘b’ a[2]=‘c’ ,也可以切片,何为切片?可以理解为用刀去把想要的元素切下来,如 a=‘abc’ a[:2] = ‘ab’ 默认从0开始,取值下标是前开后闭。如a[0:2] = ‘ab’ 2这个下标元素是取不到的,只能取到下标为1的元素,其实还有一个参数是步长,默认为1,所以完整的应该是a[开始下标:结束下标:步长],都用冒号隔开。
(5).可以用在字符串的内建方法:len(a) 计算字符串的长度,也就是字符数,返回一个数字,max(a)返回该字符串中字符的uncode码最大的那个字符,同理min(a),返回最小,这三个内建函数中,len()是最有用的。还有一个也很有用的方法,str(对象),这个方法可以将一切的数据转换成字符串,很暴力,也很强大。
2.列表(list)
如果看懂了字符串,那么就具备了基本的思维了,其他几种都可以参照学习,列表也是一个序列,但是列表是可变的,就是可以随时增加,删除,修改里面的元素,这个在后面也是非常常见的,而且很多时候我们的数据就是用列表来保存。
(1).语法格式,[元素,元素,元素,。。。。。。] 就是用中括号把数据包起来,数据与数据之间用逗号隔开
(2).列表和字符串一样,可以用下标取值,如:a=['a','b','c'] a[0]='a' a[1]='b',也可以像字符串一样切片,且方法都是一样的,不同的是可以切片赋值,相当于修改元素。列表可以用append()在末尾增加元素或者指定增加元素放在哪个位置,也可以用remove()删除末尾的元素,也可以用del()删除指定的元素。
(3).列表也有一个方法,list()
3.元组(tuple)
元组是不可变容器,有序,这个类型用的比较少,了解一下就行
(1).语法:(,),元组内元素与元素之间也是用逗号隔开,但是空元祖也必须要有一个逗号作为这是一个元组的标志。
(2).也可以用下标取值
(3).也可以切片
(4).元组的转变方法:tuple()
4.集合(set)
集合是一个可变的,无序的容器,集合有一个特殊的地方就是,集合内的元素都是不可重复的。
(1).集合的语法格式:{元素,元素,。。。。。}
(2).集合也可以用下标取值
(3).集合内的元素也必须是不可变对象
集合可以用来去重,当需要将某个容器呢重复的元素去掉时,可以利用集合的元素不可重复来实现,方法是,set(对象)返回一个集合,再将集合变回去就行了。
5.字典
这个是非常重要的容器类型,主要是高效,它是以键值对的形式显示的,字典是可变的容器,无序,但是字典的键是不可以重复的,我们可以将字典的键看成新华字典的目录,目录是不可能重复的,不然就失去了它的意义。
(1).语法格式:{key:value} 如a = {‘a’:'b',‘b’:1} 键值对与键值对之间用逗号隔开。
(2).字典的取值,用键来取值,如:a = {‘a’:'b',‘b’:1} a['a'] = 'b' a['b'] = 1
(3).字典的增删改:直接对键进行赋值,如果该键存在,则修改该键对应的值,如果该键不存在,则就是新增一个键值对,也就是新增一个元素,删除也是用键来删除,语法为:del a['a'] 就是删除a字典中,键是‘a’的那个键值对。
(4).字典的查找,删除,增加都要快于集合,因为字典相当于直接去找确定的那个元素,而集合需要一个一个的去判断是不是我们需要操作的元素,数据量小是没有多少差距的,数据量一旦大了,差距就会很明显。
接下里是很重要的语句,循环语句和if语句,这个简直不要太常用。python中常用的循环语句有:while循环和for。。。in循环
if语句: if语句通常用来做条件判断:
举个简单的例子就明白了:
a = 100
if a>0:
print('a大于0')
else:
print('a小于0')
这里我们定义了a的值为100,所以是大于0的,那程序就执行print('a大于0')这条语句,而不会执行print('a小于0')。
如果我们定义a = -1 那么程序就会执行else下的print('a小于0'),而不会执行print('a大于0')。
if语句也是可以嵌套的,里面可以再嵌套几个if语句,for语句,while语句等等。不过嵌套太多小心自己把自己搞晕
for。。。in循环
与其说是循环,不入说是遍历,for循环可以遍历所有可迭代对象写段代码来说明:
a = [1,2,3,4,5,6]
for i in a:
print(i)
这里的i是一个变量,a里面的元素会循环的赋值给i,所以打印结果就是:
1
2
3
4
5
6
print是输出语句,它其实有一个默认的参数为‘\n’也就是换行,如果我们不手动设置,就自动换行了。
while循环
这个才是真的循环啊,几段代码说明
语法格式:
while 条件:
语句1
else:
语句2
条件的结果为true就是执行语句1,为false,执行语句2
这里我们可以用while来写一个死循环,什么是死循环?就是一旦运行,就不会停下来,会永远的运行下去,直到天荒地老,海枯石烂。
例如:
while True:
print('天荒地老,海枯石烂')
while 1>0:
print('天荒地老,海枯石烂')
以上两个循环都是死循环
那么,如果我们需要死循环,但是又不像永远循环下去要怎么办?有几种解决办法。
1.break 这个单词放到循环里,当程序一遇到这个单词,就会立刻停止循环,很简单粗暴
2.嵌套一个if语句,if语句中还是用break
3.return 返回值 这个语句会停止循环,返回指定的结果,一般用在函数中
说到break,不得不说一下continue,这个语句一般是放在for循环中,由于for循环是要去把目标容器中的所有元素都取出来,是不受控制的,容器内有些元素是我们需要的,有些是我们不需要的,那么continue的作用就来了,他配合if语句,可以很方便的跳过我们不许要或者是不满足条件的元素,且不会终止for循环继续运行。非常好用,些几行代码说明一下:
a = []
for i in range(100):
if i % 2 ==0:
continue
else:
a.append(i)
print(a)
range(100),是生成从0-99的数字
if条件就是,取到的数字能被2整除,就不要,意思就是我只要奇数,不要偶数。如果是奇数,就执行else中的语句,将这个数放到集合中,否则就丢掉。看,是不是很好用,也可以理解为,continue之结束到当前这一层的循环,继续下一层虚循环,直到for循环全部结束。