Python知识要点(切片、容器 详细解读)

人生苦短,我用Python~

在此做个有关Python的一些笔记,对python中要点进行详细的解读,也·方便自己后期的回顾

笔记内容:循环结构(for循环、while循环)容器(列表、字典、元组、字符串)、函数、函数的参数类型等

一、循环结构

(一)while循环

1.1语句格式:

while 循环条件 :
	循环体
    循环体
    ......

注意:while中的循环体是有缩进的,否则便是while外的语句,不在循环体范围内

循环条件:可以是任何表达式,任何非零、或非空(null)的值为true,而其余的为false。

1.2 break/continue语句

常用在循环结构中,具体含义如下:

breakbreak语句表示跳出最近的循环(即只能跳出一个循环),无论条件真假。
continue示结束当前的循环,直接进入到下一个循环
pass不做任何事情,一般用做占位语句。

(二)for循环

2.1概念

for循环可以遍历任何序列的项目,如一个列表或者一个字符串。格式如下:

for 变量 in 容器(元组、列表、字符串):
#缩进#循环体
      ......

注意:循环体要注意缩进

其中的变量相当于循环体内的局部变量 ,只在循环体内有效。

for循环常与range()函数搭配使用,实现循环

2.2 range()函数

常与for循环搭配使用,range()函数返回的是一个可迭代对象(通俗讲,迭代对象就是一个容器),而不是列表类型, 所以打印的时候不会打印列表。具体用法如下:

range(参数)表示从0开始到参数结束打印此区间的所有整数,前闭后开(即包含第一个数字,不包含最后一个数字)
range(参数1,参数2)打印参数1到参数2区间内的整数,前闭后开
range(参数1,参数2,step)

表示打印以step为步长(step默认为1),从参数1到参数2之间的整数,前闭后开

range(参数1,参数2,-1)表示数值大小从参数1到参数2逆序输出

2.3for()循环与range()函数综合运用

示例:(注意:循环体的语句必须要缩进)

 三、容器

 概念

是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中。常见的容器有:列表,元组,字典等

(一)列表(List) 

是一个有序且可更改的集合,用方括号编写。可以通过下标来获取元素(下标从0开始) 

<1>定义方式:

方式一、list = [1,2,3,4,5]
方式二、通过全局函数list()定义:
        ls = list()
        ls2 = list(1,2,3,4,5) 

<2>实现遍历

li = [1,2,3,4,5]
for i in li:
	print(i)

<3>list的常用方法或函数

   append()、insert(x,y){ 前一个表示尾插、后一个表示在下标之前插入}  
   sort() 排序(从小到大){元素类型必须一致}
   index()------通过元素返回下标(位置)
   reverse()-----元素反转
   remove()-----删除某个元素(有相同元素删除第一个)
   count()-------返回的是某个元素的个数
   clear() ------ 清楚所有元素
   copy()--------浅拷贝(拷贝好的列表互不影响)
   extend() ------合并列表   eg:li.extend(lis)/// li.extend(range(3))///
   pop()-------返回删除列表尾部的元素(存在返回值)
   pop(i)------通过下标来删除

 引用方式:以append()/insert()为例

<4>列表的嵌套

<5> 切片(slice)

5.1定义

Python中不仅可以对列表应用,还可以对字符串和元组等对象应用。 实际上,对于任何对象,都可以运用片;切片是对对象的一种高级索引方法,索引下标切出的是序列中一个范围所对应的元素,不仅取出单个元素。

5.2语法格式

object[start:end:step]

start----切片开始的位置

end-------切片切割元素截止的位置,但不包含此下标的元素

step:切割的步长、默认为1,即从左往右切割,取负值时表示从右向左切割

切割范围:start包含但不包含end所指元素

5.3列表中元素所对的索引下标

 5.4 简单切片

上图标识的是用下标表示的元素位置,我们利用上述标识位置的表格图来理解切片的相关操作

>>> a
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 >>> a[2:3]
 [2]
 >>> a[5:9]
 [5, 6, 7, 8]
 >>> a[5:-1]
 [5, 6, 7, 8]
 >>> a[-5:9]
 [5, 6, 7, 8]
 >>> a[-5:-1]
 [5, 6, 7, 8]

这是简单的切片操作,step默认为1,即表示从左向右切割,但不包括最后一个元素。

注意:如果start的位置比stop还靠后的话,会直接返回空列表,如下所示:

>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[9:5]
[]----------返回空列表

5.5缺省的情况

若start和end为缺省,python的行为是尽可能取出最大区间,代码如下:

>>> a=list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[:5]
[0, 1, 2, 3, 4]
>>> a[5:]
[5, 6, 7, 8, 9]
>>> a[:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

即start的缺省值是无穷小,end的缺省值是无穷大。

5.6步长(step)取正数

当step为正数时,start和end的截断和缺省规则与简单切片操作一样:

>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[1:5:2]
[1, 3]
>>> a[::2]
[0, 2, 4, 6, 8]
------分割线---------------
注意:当step=2时,表示以每2个单位的长度切割

5.7step为负数

step为负数时,切片将其解释为从start出发以步长|step|逆序索引序列,此时,startstop截断依然遵循前述规则,但缺省发生一点变化,因为我们说过,在缺省的情况下,Python的行为是尽可能取最大区间,此时访问是逆序的,start应尽量取大,stop应尽量取小,才能保证区间最大,所以:

此时的start的缺省值为无穷大,而end的缺省值为无穷小

>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[:5:-1]
[9, 8, 7, 6]
>>> a[5::-1]
[5, 4, 3, 2, 1, 0]
>>> a[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

注意:前闭后开,不包括end所指向的元素
(二)集合(set)

<1>定义

Python中的集合类似于数学中的集合概念,它是一组无序、不可重复数据的组合。集合用{ ...}创建,某种程度上可以把集合看作是没有值的字典,注意:集合不可以通过下标去访问。

<2>集合的创建

s = {'s', 'e', 't'}
s = set(['a, b, c, d, e'])

#注意,python中{}为空字典类型,并非空集合。空集合需要用set()函数创建
s = set()  #创建一个空集合

#集合也可以用表达式(推导)的方式创建
{x * 2 for x in 'abc'}  #{'aa', 'bb', 'cc} 
{x **2 for x in range(1,5)}   #{1, 4, 9, 16}

<3>集合的常用操作

set1 `&` set2 #交运算
set1 `|` set2 #并运算
set1 `-` set2 #差运算,set1减去set1 `&` set2部分

<4> 集合的常用方法

 (三)元组(tuple)-----可通过下标获取元素

<1>定义

元组类似于列表,是一个基于位置的有序对象集合,但是元组一旦创建之后就不能更改,因此列表中修改元素的操作对于元组都不适用。虽然元组是一个不可变的数据类型,但元组内的元素是可变的,如:s = (1,2,3,["s","v"],4,5)  ------  s[3][0]="x" ---->>>此时修改的便是二维元素里的列表。所以,使用元组的优势显而易见:元组和其他不可变量类似于其他语言中“常量”的声明,它的不可变性提供了某种一致性,这样可以确保元组在程序中不会被另一个引用修改。

<2>元组的创建

t = (1, 2, 3)
t = tuple([1, 2]) ----利用全局函数tuple()创建
------------------------------------------------
注意:定义元组只有一个元素:s = (1,)  ---末尾必须加逗号

<3>元组的方法

cmp(tup1,tup2)----比较元组元素
index(1, 2) ------- 寻找第2个元素1的位置
count(2)------返回元素2的个数
tuple(1,2,3,4)+tuple(5,6,7,8)------元组的拼接--结果为:(1,2,3,4,5,6,7,8)

(四)字典

<1>定义

字典与列表最大的区别就是字典强调的是“键值对”,key与value一一对应,字典中的存放顺序并不重要,重要的是“键”和“值的对应关系”

<2>字典的创建

#第一种
a = {key1:value1, key2:value2}  
如a={“name":"zhangsan",”huawei“:"nb"}
# 第二种,注意此种情况下键必须为字符串
a = dict(key1=value1, key2=value2) 
# 第三种
a = {}-------先创建空字典
a[key1] = value1  ---通过键来赋值
a[key2] = value2  ----->>>如:a["name"] = "lisi"

<3>字典的索引

1.a=dict1[key] 
#key是字典的键,返回的是对应的值value
2.a=dict1.get(key)

注意: get方法获取键的值,若键不存在,则返回设定的默认值default(默认为None)--与`[key]`获取值的区别是,get方法遇到键不存在的时候会返回设定值,而直接索引遇到键不存在时会报错“missing-key”

<4>字典的遍历(三种遍历)

 for k,v in d.items(): ------遍历字典中所有的键值对
 	print(k,v)

 for k in d:
 	print(k,d.get(k))

for k in d:
	print(k,d[k]) ---遍历字典中所有的键,并输出键值对

<5>字典中的常用方法

方法:
d = {"name":"zhangsan","huawei":"nb"}
(1)d.get("name")-----取值
(2)values()-------获取所有的值   {d.values()}
(3)keys()-----获取所有键
(4)items()------获取所有的键值对
(5)d.setdefault(key)-----插入键值对
(6)d.pop(key) ----- 通过值来删除键值对
(7)d.popitem()------删除键值对,存在返回值
(8)d.update(d1) -----把d1更新到d中

(五)字符串

<1>定义

在Python中,我们说的是String数据类型的相同定义。字符串是序列字符的数组,并写在单引号,双引号或三引号内。另外,Python没有字符数据类型,因此当我们编写“ a”时,它将被视为长度为1的字符串。

<2>字符串的创建

s = 'Hello'
print(s)
s1 = "Hello"
print(s1)
s2 = ''' Hello
World!!!!! '''
print(s2)

<3>字符串中常用的方法

方法:
capitalize---将首字母大写 
 s.center(20,fillchar=" ")--------实现字符串的居中 如:{ s = "i am love you"
                   s.center(30,"*")
                   print(s.center(30,"*"))}
s.rjust(40," ")---右对齐
s.ljust(40,“ ”)-----左对齐
s.count("o")--------统计一个字符串中字符出现的次数
endswith("h")-----判断是否以括号内的字符为结尾  如不符情况 则会返回false
startswith---------同理
s.index()-------查找字符或字符串第一次出现的位置 /
 s.rindex()-----从右向左找(找的是最后一个位置(返回此时的位置()))
s.find()-------查找字符第一次出现的位置,如果不存在则返回 -1
format()------拼接字符
islower------判断是否全为小写 / isupper -----判断大写
isspace() --------判断是否是一个空的字符串 / isdigit()---判断是否全为数字{可以将数字字符转换为int()整型}
isalpha--------判断是否全为字母
isalnum ------- 判断是否是有效字符
lower()------将字母转换为小写
upper()------大写
split("t")----分割字符串,返回的是列表
strip()------清除字符串两侧的空格
lstrip()-----清除左边的空格
rstrip()-----清除右边的空格
replace(old,new)----新字符替换旧字符
 ord()-----转换为ASCLL编码
eval()----去掉引号
reverse()-----逆序
sort()----排序

ps:后续的函数和参数后期会继续补充~~~~~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pursuit@H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值