python学习笔记day2(字符串、字典、元组、列表)

一.字符串介绍及常用操作方法

  1.(1)字符串介绍:当打来浏览器登录某些网站的时候,需要输入密码,浏览器把密码传送到服务器后,服务器会对密码进行验证,其验证过程是把之前保存的密码与本次传递过去的密码进行对比,如果相等,那么就认为密码正确,否则就认为不对;服务器既然想要存储这些密码可以用数据库(比如MySQL),当然为了简单起见,咱们可以先找个变量把密码存储起来即可;那么怎样存储带有字母的密码呢?简而言之,这就是字符串。以下给出一个简单的例子作为说明:

  

  (2)字符串只能相加或者相乘,不能进行减法及除法运算。以下给出例子说明:

  

  (3)字符串的格式化输出:

  

  如上就是字符串的格式化输出,%S其实就是占位符,先占下空间然后取数值。当然大家可能会有疑问,如果不用格式化输出,如何打印出%呢,其实很简单,在加一个%做下转译就好啦,这里不再举例说明。

  (4)字符串的下标索引取值:

  

  这里简要说明下:字符串的索引是从0开始取,0 1 2....这样来排序,因此想要取到哪个字符就需要先找到他的索引值,然后通过索引值来取字符;-1即为最后一个字符串的索引值(倒叙),当然也可以正序查找;当只有一个":"时,即为按照正序排列取所有的字符;然后就是切片的表示方法:[-1::-1],即为从后往前取值,并且取到开头,:中间就可以省略不写,最后一个-1表示步长为1,如果步长为-2则意思就是从后往前取值,每隔两个索引取一次值,正序查找也是一样,只不过步长为正数;这里还需要重要说明下,假如切片这样表示[0:8],意思为取01234567这几个字符,并不能取到索引 8所在的字符,这也就是所谓的顾头不顾尾。因此切片的语法规则可以这样表示:

  [起始索引:结束索引+1:步长]

  (5)字符串的常用方法:

  首字母大写,其他字母小写(capitalize):

  

  大小写翻转(swapcase):

  

  非字母隔开的每个单词首字母大写(title):

  

  设置总长度并居中展示(center):

  

  将字母全部换成大写(upper):

  

  将字母全部换成小写(lower):

  

  小案例走一波:模仿用户输入一个四位数的验证码,大家都知道验证码一般是不区分大小写的,那么后台是怎么做到的呢,很简单就是用到上述的upper或者lower方法,将字母都统一转换成大写或者小写的,方便校验,否则如果不这样做,那么用户需要输入多次才能输对,用户体验非常不好,以下是程序说明:

  

  判断字符串以什么开头(startswith):

  

  判断字符串以什么结尾(endswith):

  

  默认去除字符串的空格换行符等、可自定义(strip),lstrip和rstrip分别是从左右去除字符串的符号,这里不再举例说明:

  

  小案例:用户输入账户密码登录(注意用户在输入时可能会输入空格等其他字符,如果不用strip方法,那将很难判断,因此这里用strip方法):

  

  将字符串替换成其他字符(replace):

  

  将字符串按照一定的规则分隔,即将字符串转换为列表(split):

  

  将列表按照一定的规则分隔,即将列表转换为字符串(join):

  

  通过元素找索引的方法(find/index):

  find:找不到返回-1     index:找不到会报错

  

  format格式化输出的用法,直接给出例子说明:

  

  公共方法(len/count),len:测量字符串的长度,count计算某些元素出现的次数:

  

  判断字符串的组成,isalnum:判断字符串是否由字母和数字组成;isalpha:判断字符串是否由纯字母组成;isdigit:判断字符串是否由纯数字组成。

  

  数据类型的相互转换(了解即可):

  str----->int            int("123")

  int----->str            str(123)

  int<---->bool        非0即为真,0就为False

  str-----> bool       非空 True   空字符串 False

 (6)运算符的优先级:() > not > and > or

  '''0 是False  非0 都是True
    x or y if x is True,return x'''

  5 or  4: 5非0为真,则返回5

  5 and 5:5非0为真,则返回4,只需记着与or的语法相反即可。

  

 二.列表介绍及操作方法

  1.列表的取值方法,按照索引取值与元素本身的数据类型一致;按照切片取值取出来的是最小列表:

  

  2.列表的增加:

  (1).append:在列表结尾追加:

  

  (2).insert:根据索引添加:

  

  (3).extend:以最小元素追加:

  

  3.列表的删除:

  (1)pop:按照索引删除:

  

  (2)remove:按照元素删除:

  

  (3)clear:清空列表但是表结构还在:

  

  (4)del:清空列表所有,也可以按索引删除:

  

 4.列表的修改:

  (1)按照索引改:

  

  (2)按照切片改:

  

  (3)按照步长改(必须一一对应):

  

 5.列表的查看:

  

 6.操作列表的一些其他方法:

  

 7.列表的嵌套:

  

三.元组的简单介绍及操作方法:

  元组就是用()括起来的只读列表,不能进行写操作,例如:(1,2,3,"xiaoli",4),下面是一些简单操作方法举例:

  

  range的简单用法:

  相当于产生一个有范围的随机数字:

  

 四.字典的增删改查操作:

  1.字典的增加:

  

  setdefault设置默认的属性之后不允许修改,eg:

  

  2.字典的删除:

  (1).按照键值删除,并且没有返回值(pop):

  

 (2).随机删除,并且有返回值(popitem):

  

 (3).清空字典,但保留字典的结构(clear):

  

  (4).彻底删除字典,并且不保留字典的结构;或者按照键去删除键值对(del):

  

  

  3.字典的修改:

 (1).按照键值去改,有则修改,无则添加:

  

  (2).字典与字典的合并更新(update):

  

 4.字典的查找:

  (1).按照键去查找:

  

  此种方法有个弊端就是:当字典中没有此键时就会报错。当然还有另外一种方法查找不会报错(get):

  

  (2).遍历字典的进行查找:

  

 (3).小技巧--分别赋值:

  

 5.字典的嵌套使用及数据类型的补充:

 (1).字典的嵌套操作:

  

  (2).小案例:将索引为奇数的元素删除[11,22,33,44,55]:

  

  接下来我们试着用for循环来实现这个:

  

  观察以上结果大家可能会发现:结果并不是我们想要的,那是为什么呢?,这是因为,列表中的元素在迭代过程中不能删除操作,也就是说当前边的元素被删除之后,后边的元素会前移占位,所以你在循环这个列表删除时可能就删不掉那个位置原来的元素了,想要解决这个问题其实也很简单,就是我们通过倒叙删除,这样前边的元素就不会移动了,下面给出例子说明。

  

  (3).再循环一个字典时,不能改变一个字典的大小:

  

  

  上例说到我们在循环一个列表时,不能改变一个列表的大小,那应该怎样做才能循环删除呢?我们可以重新定义一个列表用来存放要删除列表中的key,然后根据这个列表进行删除,具体操作如下:

  

 (4).fromkeys的简单用法:

  

 

posted @ 2018-05-16 18:37  淋汐去水  阅读(215)  评论(0)    收藏  举报