DataWhale学习计划(第六期):python基础任务2

1. 列表

列表是python内置数据类型,列表中的元素可以增、删、改,类似java中的数组。

a. 标志

列表用[ ]定义。

b. 基本操作(创建,append( ),pop( ) ,del( ), 拷贝)

创建

只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

>>> list1 = ['physics', 'chemistry', 1997, 2000];
>>> list2 = [1, 2, 3, 4, 5 ];
>>> list3 = ["a", "b", "c", "d"];
>>> print(list1)
['physics', 'chemistry', 1997, 2000]
>>> print(list2[2])
3

增加

1.append 通过append可以向列表添加元素
2.extend 通过extend可以将另一个集合中的元素逐一添加到列表中(只能是集合tmp_list.extend(1)错误)

>>> a = [1, 2]
>>> b = [3, 4]
>>> a.append(b)
>>> a
[1, 2, [3, 4]]
>>> a.extend(b)
>>> a
[1, 2, [3, 4], 3, 4]

3.insert(index, object) 在指定位置index前插入元素object

>>> a = [0, 1, 2]
>>> a.insert(1, 3)
>>> a
[0, 3, 1, 2]

删除

1.del:根据下标进行删除del a[1];或者del a 直接删除列表

 >>>a=[10,15,20,25,30]
 >>>del a[0]
 >>>a
[15,20,25,30] 
>>>del a

2.pop:pop()删除最后一个元素;pop(0)根据下标删除

  >>>a=[10,15,20,25,30]
  >>>a.pop()
  30
  >>>print(a)
  [10,15,20,25]

3.remove:根据元素的值进行删除a.remove(‘list’)

>>>a=[10,15,20,25,30]
>>>a.remove(25)
>>>a
[10,15,20,30]

拷贝

Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块。
copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
copy.deepcopy 深拷贝 拷贝对象及其子对象
import copy
list0 = [1,[2,3],4,5]
print(list0)

newlist = list0
list1 = list(list0)
list2 = list0  * 1
list3 = list0[:]
list4 = copy.copy(list0)
list5 = copy.deepcopy(list0) #列表深拷贝,包括元素为子列表
list6 = list0.copy()
 
list0.append(6)
list0[1].append(23)
 
print("修改后的list0:\t",list0,"\t地址为:\t",id(list0))
print("---------")
print("=号方式:\t\t\t",newlist,"地址为:",id(newlist))
print("list()方式:\t\t\t",list1,"地址为:",id(list1))
print("*号方式:\t\t\t",list2,"地址为:",id(list2))
print("[:]方式:\t\t\t",list3,"地址为:",id(list3))
print("copy.copy()方式:\t\t\t",list4,"地址为:",id(list4))
print("list0.copy()方式:\t\t\t",list5,"地址为:",id(list5))
print("copy.deepcopy()方式:\t\t\t",list6,"地址为:",id(list6))

在这里插入图片描述
小结:
a.深浅拷贝都是对原实体的拷贝,区别在于是 实体的拷贝还是引用的拷贝【堆空间还是栈空间】
b.不可变的实体:对于深浅拷贝毫无影响,最终的地址和值都是相等的(不可变实体:一旦创建就不能发生改变,包括数字,字符串,元组)
c.可变的实体:(可变实体:可以进行修改的实体,包括列表,字典)
=浅拷贝:值相等,地址相等
copy浅拷贝:值相等,地址不相等
deepcopy深拷贝:值相等,地址不相等

c. 列表相关方法

列表操作包含以下函数:
1、cmp(list1, list2):比较两个列表的元素
2、len(list):列表元素个数
3、max(list):返回列表元素最大值
4、min(list):返回列表元素最小值
5、list(seq):将元组转换为列表

列表操作包含以下方法:
1、list.append(obj):在列表末尾添加新的对象
2、list.count(obj):统计某个元素在列表中出现的次数
3、list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4、list.index(obj):从列表中找出某个值第一个匹配项的索引位置
5、list.insert(index, obj):将对象插入列表
6、list.pop(obj=list[-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7、list.remove(obj):移除列表中某个值的第一个匹配项
8、list.reverse():反向列表中元素
9、list.sort([func]):对原列表进行排序

2. 元组(tuple)

元组是不可以改变的序列。同list一样,元组可以存放任意类型的值。

a. 标志

元组标识:(,,,,,)
Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。

b. 基本操作(创建及不可变性)

1.创建空元组
t = () # t绑定空元组

2.创建非空元组:
t = 200,
t = (20,)
t = (1, 2, 3)
t = 100, 200, 300
t = (1, “two”, 3, ‘four’)

3.元组的不可变性
tuple = (1, 2, 3)
tuple[2]
tuple[2]=100
在这里插入图片描述

3. string字符串

a. 定义及基本操作(+,*,读取方式)

字符串定义:’a’,“aa”。双引号或者单引号中的数据,就是字符串

a = 'zhangsan'
b = 'list'
c = a + b + 'a'
print(c)
zhangsanlista

b. 字符串相关方法

查找
.find(str),str存在字符串中返回下标索引值,不存在返回-1
.rfind(str),str存在字符串中,查找顺序为从右向左,其它与find一样
.index(str),存在返回下标索引值,不存在报异常
.rindex(str),存在返回下标索引值,查找顺序为从右向左,其它与index一样
.count(str[,起始,结束]),查找指定字符串中该字符出现的总次数

替换
.replace(str1,str2 [,n] ),将字符串中所有的str1替换为str2,n可指定最多替换的次数

分割
.split(str[,n]),以str为分隔符(分割后丢失),将字符串分割为多个字符串,n可指定最多的分割次数
.partition(str),已指定字符做为一个部分,分割两边,生成三部分的字符串
.splitlines(),按照行进行分割,返回一个包含各行作为元素的列表

大小写格式化
.capitalize(),将字符串第一个首字母大写(其它都小写)
.title(),将字符串中所有单词首字母大写(其它都小写)
.lower()转换所有大写字符为小写
.upper()转换所有小写字符为大写

对齐格式化
.ljust(width)返回一个原字符串左对齐,并默认使用空格补充至长度为width的字符串
.rjust(width)返回一个原字符串右对齐,并默认使用空格补充至…
.center(width) 返回一个原字符居中,并使用空格补充至width长度的新字符串

清除空白字符
.lstrip(),删除左侧的空白字符
.rstrip(),删除末尾的空白字符
.strip(),删除两端的空白字符

检查
.startswith(str),检查字符串是否以指定字符开头,是则返回Turn,否则返回False
.endswith(str),检查字符串是否以指定字符结尾,是则返回Turn,否则为False
.isalpha(),检查字符串是否都是字母,是返回Turn,否则返回False
.isdigit(),检查字符串是否只包含数字,是返回Turn,否则返回False
.isalnum(),检查字符串是否都是字母或数字,是返回Turn,否则返回False
.isspace(),检查字符串是否只包含空格,是返回Turn,否则返回False

4. 字符串格式化问题

方法一 % 格式符

基本形式:%[(name)][flags][width].[precision]typecode
(name) 可选,用于选择指定的key(与字典形式结合,选择指定的key,友情提醒,字典没有顺序的说法噢)
flags 可选,可供选择的值有: + - 空格 0
width 可选,占有宽度
.precision 可选,小数点后保留的位数(小詹友情提醒,整型d可是没有小数的说法噢)
typecode 必选!
在这里插入图片描述

方法二 format方式

基本形式: [[fill]align][sign][#][width][,][.precision][type]
fill 【可选】空白处填充的字符
align【可选】对齐方式(需配合width使用)
sign 【可选】有无符号数字【同方法一的flags,仅±0三种取值】
#【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示
, 【可选】为数字添加分隔符,如:1,000,000
width 【可选】格式化位所占宽度
.precision 【可选】小数位保留精度
type 【可选】格式化类型,类似方法一,不重复叙述

https://blog.csdn.net/qq_33867131/article/details/81503362
https://blog.csdn.net/hju22/article/details/85055883
https://blog.csdn.net/Mithrandir_/article/details/81352710
https://blog.csdn.net/herogxw4/article/details/88778534
https://blog.csdn.net/yyyeyyyi_211/article/details/85099658
https://blog.csdn.net/Windgs_YF/article/details/53185353
https://blog.csdn.net/pythondafahao/article/details/79687817
https://blog.csdn.net/weixin_43965642/article/details/84988578
https://blog.csdn.net/weixin_40907382/article/details/80508677

猜你喜欢

转载自blog.csdn.net/weixin_43981221/article/details/88980823
今日推荐