python自动化学习笔记(day5)

python自动化学习笔记(day5),第1张

python自动化学习笔记(day5) 基础数据类型(二) 2.4列表的常用 *** 作 2.4.2 增加元素
  • append(el) 在列表的末尾增加一个元素

ls = [1, 2, 3]
ls.append(4)
print(ls)
[1, 2, 3, 4]

ls.append([1, 2]) #添加的元素为列表等,视为一个元素
print(ls)
[1, 2, 3, 4, [1, 2]]
  • insert(index, el) 在列表的指定索引的前面添加一个元素

ls = [1, 2, 3]
ls.insert(2, 'a')  #第一个参数为指定位置的索引,第二个参数为需插入的元素
print(ls)
[1, 2, 'a', 3]
  • extend(iterable) 扩展列表,元素为可迭代对象中的元素

ls = [1, 2, 3]
ls.extend([4, 5, 6])
print(ls)
[1, 2, 3, 4, 5, 6]

ls = [1, 2, 3]
ls.extend(4) #如果扩展的元素为不可迭代对象,会报错
print(ls)
---------------------------------------------------------------------------
​
TypeError                                 Traceback (most recent call last)
​
~AppDataLocalTemp/ipykernel_17584/634050513.py in 
      1 ls = [1, 2, 3]
----> 2 ls.extend(4) #如果扩展的元素为不可迭代对象,会报错
      3 print(ls)
TypeError: 'int' object is not iterable

2.4.3 删除元素
  • pop(index = -1) 删除指定索引的元素,并返回该元素,没有指定索引默认删除最后一个元素

ls = [1, 2, 3]
ls.pop() #没有指定索引,默认删除最后一个元素,并且pop方法直接返回删除的元素
3

print(ls)
[1, 2]

ls = [1, 2, 3]
ls.pop(0)
print(ls) #删除指定索引的元素
[2, 3]
  • remove(value) 从列表中删除第一个指定的值value,如不存在value则报错

ls = [1, 2, 3, 4]
ls.remove(1)
print(ls)
[2, 3, 4]

ls.remove('a') #value不存在则报错
---------------------------------------------------------------------------
​
ValueError                                Traceback (most recent call last)
​
~AppDataLocalTemp/ipykernel_17584/475934945.py in 
----> 1 ls.remove('a')
ValueError: list.remove(x): x not in list
  • clear() 清空列表,远列表变成空列表

ls = [1, 2, 3]
ls.clear()
print(ls)
[]

2.5 列表的其他方法
  • count(value) 统计列表中value出现的次数

ls = [1, 2, 3, 1]
ls.count(1)
2

ls.count(4)

0

  • index(self, value, start=0, stop=9223372036854775807) 返回列表中指定值value的第一个索引,不存在则报错,start表示开始搜素的索引位置,默认为0

ls = [1, 2, 3, 1]
ls.index(2)

1

ls.index(1, 1) #第一个参数表示需要搜素的value为1,第二个参数表示从索引为1开始向后搜素

3

ls.index(4) #搜素的value不存在报错
---------------------------------------------------------------------------
​
ValueError                                Traceback (most recent call last)
​
~AppDataLocalTemp/ipykernel_17584/2713790472.py in 
----> 1 ls.index(4)
ValueError: 4 is not in list
  • reverse() 翻转列表元素

ls = [1, 2, 3]
ls.reverse()
print(ls)
[3, 2, 1]
  • sort(key=None, reverse=False) 对列表进行排序,默认按照从小到大的顺序,当参数 reverse=True 时,从大到小。注意列表中的元素类型需要相同,否则抛出异常。

ls = [2, 1, 4, 3]
ls.sort() #不传入reverse时,默认从小到大
print(ls)
[1, 2, 3, 4]

ls.sort(reverse = True)
print(ls) #传入reverse = True时,从大到小排列
[4, 3, 2, 1]

ls = [1, 2, '3']
ls.sort() #当列表内元素不为同类型时,会报错
print(ls)
---------------------------------------------------------------------------
​
TypeError                                 Traceback (most recent call last)
​
~AppDataLocalTemp/ipykernel_17584/3701372791.py in 
      1 ls = [1, 2, '3']
----> 2 ls.sort()
      3 print(ls)
TypeError: '<' not supported between instances of 'str' and 'int'

ls = ['c', 'a', 'b']
ls.sort()
print(ls)
['a', 'b', 'c']

2.6 字符串和列表的转换

字符串是字符组成的序列,可以通过 list 函数将字符串转换成单个字符的列表

str = 'hello world!'
ls = list(str)
print(ls)
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!']

由字符组成的列表可以通过字符串的 join 方法进行拼接

使用''.jojn(ls)方法拼接列表,''表示用于拼接的符号,ls是需要拼接的列表

''.join(ls) #使用空字符进行拼接

'hello world!'

'---'.join(ls) #使用其他字符进行拼接

'h---e---l---l---o--- ---w---o---r---l---d---!'


3. 元组

元组(tuple)表示任意元素的序列,元素可以是任意数据类型,序列中的元素不能增,删,改,可以说元组就是不可变的列表。

3.1 元组的定义

元组通过一对小括号进行定义,元组之间使用逗号隔开。

a = ()               #空元组
b = ('a', 'b', 'c')  #字符串
c = (1, 2, 3)        #数字
d = (1, [])          #列表
e = (1, ())          #元组
f = 1, 2, 'a'        #可以直接加逗号不加括号赋值
 
print('a的类型为:', type(a))    # a的类型为: 
print('b的类型为:', type(b))    # b的类型为: 
print('c的类型为:', type(c))    # c的类型为: 
print('d的类型为:', type(d))    # d的类型为: 
print('e的类型为:', type(e))    # e的类型为: 
print('f的类型为:', type(f))    # f的类型为: 
a的类型为: 
b的类型为: 
c的类型为: 
d的类型为: 
e的类型为: 
f的类型为: 

# 单元素元组的定义,一定要加逗号
t = 'a',
s = 'a'
​
print(type(t))
print(type(s))

3.2 元组的索引和切片

序列的索引和切片完全一致,参加字符串

3.3 元组的常用 *** 作

元组的元素不能修改,增加和删除,其他 *** 作和列表的 *** 作一致。

元组利用不可修改的特性,应用在多变量赋值和函数多返回值上。

a, b = (1, 2) #多元素的赋值
# 多写成a, b = 1, 2
print(a, type(a))
print(b, type(b))
1 
2 

# 交换a, b的值
a, b = b, a
print(a)
print(b)
2
1
3.4 len函数

python 内建函数 len 可以获取对象中包含的元素个数

s = 'hello'
ls = [1,2,3]
t = (1,2,3)
print(len(s))
print(len(ls))
print(len(t))
5
3
3
4. 可变与不可变对象

python 中的对象根据底层内存机制分为可变与不可变两种。

可变对象可以在其 id() 保持固定的情况下改变其取值。

下面的列表 a,修改值后,id 保持不变

a = [1, 2, 3]
id(a)

2443999948288

a[0] = 'a'
print(a)
id(a)
['a', 2, 3]
2443999948288

基本数据类型中列表,集合和字典都是可变数据类型。

如果修改一个对象的值,必须创建新的对象,那么这个对象就是不可变对象。

s = 'hello'
id(s)

2443995686000

s = 'Hello' # 不可变类型改变其中的元素,则id也改变
id(s)

2444000271280

基本数据类型中数字,字符串,元组是不可变对象。


5. 可哈希对象

一个对象的哈希值如果在其生命周期内绝不改变,就被称为可哈希。可哈希对象都可以通过内置函数 hash 进行求值。

它们在需要常量哈希值的地方起着重要的作用,例如作为集合中的元素,字典中的键。

不可变数据类型都是可哈希对象,可变数据类型都是不可哈希对象。

hash(1)

1

hash((1, 2))

-3550055125485641917

hash([1, 2]) # 可变类型列表,就不可以哈希
---------------------------------------------------------------------------
​
TypeError                                 Traceback (most recent call last)
​
~AppDataLocalTemp/ipykernel_19672/3864786969.py in 
----> 1 hash([1, 2])
TypeError: unhashable type: 'list'

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5158401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存