字典、列表、元祖、字符串的综合(2)

1.利用负数作为索引项

python里面的字典可以用负数作为其索引项,且-1表示最后一个元素

例如:

index = [1,2,3]
print(index[-2])
#输出结果为:2

2.列表的几个操作

①‘+’操作符——用于连接两个列表,生成一个新的列表

例如:

x = [1,2,3]
y = [4,5,6]
z = x + y
print(z)
#输出结果为:
[1,2,3,4,5,6]


②'*'操作符——将一个列表按给定的次数复制、生成一个新的列表

例如:

list_n = [1] * 4
print(list_n)
#输出结果为:
[1,1,1,1]


3.列表数据类型的方法——列表的方法都没有返回值

像max,min,len,list等python内置的函数,它们是有返回值的,而对于可变数据类型列表的方法,是没有返回值的,它们直接修改列表

①extend方法

extend可以向列表的末尾添加可迭代的数据,元祖,列表,集合字符串等都能添加

例如:

list_n = [1] * 4
list_n.extend('123')
print(list_n)
#输出结果为:
[1, 1, 1, 1, '1', '2', '3']

②内置函数sum,不是方法

t = [1,2,3]
a = sum(t)
print(a)
#输出结果为:
#6

4.删除列表元素

方法一  ——  pop

修改列表并返回被移除的元素,如果不提供索引的参数,即括号里面是空的,则删除和返回最后一个元素

例如:

a = [1,2,3,4,5,6,7,8,9]
pop_1 = a.pop()
pop_2 = a.pop(2)
print(pop_1,pop_2)
#输出结果为:
#9,3

方法二 —— del

不返回被移除的值

a = [1,2,3,4,5,6,7,8,9]
del a[8]
del a[2]
print(a)
#输出结果为:
#[1,2,4,5,6,7,8]

方法三 —— remove

remove不返回任何值,且传入的参数是欲删除元素的值

例如:

a = [1,2,3,4,5,6,7,8,9]
a.remove(9)
a.remove(3)
print(a)
#输出结果为:
#[1,2,4,5,6,7,8]

另外使用del可以删除多个元素

例如:

a = list(range(1,10))
del a[3:7]
print(a)
#输出结果为:
#[1,2,3,8,9]

5.列表和字符串之间的互相转换

字符串是一个字符序列,列表是一个值的序列,但是字符列表不同于字符串,

split()、join()、list()实现将列表和字符串之间相互转换,例如:

string_1 = 'This is a test string'
list_1 = string_1.split()
print(list_1)
#输出结果为:['This','is','a','test','string']
string_2 = ','.join(list_1)
print(string_2)
#输出结果为:'This,is,a,test,string'
word = 'python'
list_2 = list(word)
print(list_2)
#输出结果为:['p','y','t','h','o','n']

6.对象,别名,引用

当两个变量指向同一个对象时,可以用is来判断,

当两个变量值相同时,可以用'=='或'<>'来判断

例如:

a = 'python'
b =  'python'
print(b is a,b == a)
#输出结果为True,True,
#当两个变量指向同一个对象时,它们的值肯定相等

c = [1,2,3]
d = c
e = [1,2,3]
print(c is d , c == d)
print(e is c , c == e)
#输出结果为:True,True
#False,True

当两个变量指向同一个可变对象时,其中一个变量值的改变也会引起另一个值的改变

例如:

①直接将一个变量赋给另一个可变变量

a = [1,2,3]
b = a
b[0] = 4
print(a,b)
#输出结果为:[4,2,3],[4,2,3]


②由实参传递给函数的形参时:

def reference(b):
    b[0] = 9
a = [1,2,3]
reference(a)
print(a)
#输出结果为:[9,2,3]


总结:我们可以将上面的b叫做a的别名,它们指向一个对象,如果其中一个改变,必定会引起另一个的改变

这种情况容易引起意想不到的错误,如何避免嗯??

有以下几种方法:

①list方法

a = [1,2,3]
b = list(a)
print (b is a,b == a)
#输出结果为:(False,True)

②分片方法

a = [1,2,3]
b = a[:]
print(b is a ,b == a)
#输出结果为:(False,True)

③copy库的copy方法

import copy
a = [1,2,3]
b = copy.copy(a)
print(b is a ,b == a)
#输出结果为:False,True
c = [1,2,[1,2]]
d = copy.copy(c)
print(c[2] is d[2])
#输出结果为True
e = copy.deepcopy(c)
print(c[2] is e[2])
#输出结果为:False
f = [1,2,[1,2,[1,2]]]
g = copy.deepcopy(f)
print(g[2][2] is f[2][2])
#输出结果为:False


当列表里面嵌套着列表时,需要用deepcopy



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值