首页 > 编程语言 >Python常见部分内置方法与操作

Python常见部分内置方法与操作

时间:2022-11-29 19:56:00浏览次数:45  
标签:内置 Python 18 s1 常见 l1 print age d1

Python常见内置方法与操作

整型int

  1. 类型转换

int(其它数据类型),但只支持数字类型和小数类型

>>> num1 = input('Your age>>>:')
Your age>>>:18
>>> print(type(num1))
<class 'str'>  # 可以看到输入的类型为字符串类型
>>> num1 = int(num1)
>>> print(type(num1))
<class 'int'>  # 可以看到转换后的类型
  1. 进制数转换

将10进制转换为2、8、16进制数,根据下面的代码可以看到,2进制的以0b开头,8进制以0o开头,16进制以0x开头。

>>> print(bin(100))  # 转换为2进制
0b1100100  # 转换后的2进制数据值
>>> print(oct(100))  # 转换为8进制
0o144  # 转换后的8进制数据值
>>> print(hex(100))  # 转换为16进制
0x64  # 转换后的16进制数据值

将2、8、16进制数转换为10进制

>>> print(int(0b1100100))
100
>>> print(int(0o144))
100
>>> print(int(0x64))
100

如果转换的内容带有引号,需要告诉解释器进制数

>>> print(int('0b1100100'))# 加上引号后直接输出会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '0b1100100'

# 告诉解释器你的进制数就可以输出了
>>> print(int('0b1100100',2)) 
100
>>> print(int('0o144',8))
100
>>> print(int('0x64',16))
100

浮点型float

  1. 类型转换

float(其它数据类型),转换内容中只能出现纯数字,外加一个小数点。

>>> num1 = 10
>>> print(type(num1))
<class 'int'>  # 数据整形为int
>>> num1 = float(num1)  # 转换数据类型
>>> print(type(num1))
<class 'float'>  # 数据类型为float
>>> print(num1)
10.0  # 可以看到转换后的结果加上了小数

字符串str

  1. 类型转换

str(其它数据类型),可以转换任意数据类型,只需要在数据值的前后添加引号即可。

>>> num1 = 10
>>> print(type(num1))
<class 'int'>
>>> print(num1)
10
>>> num1 = '10'
>>> print(type(num1))
<class 'str'>	# 数据类型为str
>>> print(num1)
10	# 虽然值也为10,但数据类型为str,这时是不可以作运算的。

>>> num2 = 5	# 定义一个num2
>>> print(num1 - num2)	# 使两个值相减,此时的num1的值为str类型的10
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'int'  #直接报错
  1. 操作与方法

索引取值

取索引值为1的对应的数据值

>>> s1 = 'abcde'
>>> print(s1[1])
b

取倒数第一个数据值

>>> s1 = 'abcde'
>>> print(s1[-1])
e

取出所有数据值

>>> s1 = 'abcde'
>>> print(s1[:])
abcde
>>> print(s1[::])
abcde

切片操作

注意,切片操作取值顾头不顾尾,默认顺序为从左到右取值。

取索引1至5(不包含5)对应的数据值

>>> s1 = 'abcde'
>>> print(s1[1:5])
bcde

从倒数第5个值开始,取到倒数第2个值

>>> s1 = 'abcde'
>>> print(s1[-5:-1])
abcd

输出从索引2开始所有的数值

>>> s1 = 'abcde'
>>> print(s1[2:])
cde

从索引0开始输出,直到索引4结束

>>> s1 = 'abcdefghijk'
>>> print(s1[:5])
abcde

从索引0开始输出,之后每隔一个索引输出一次数据(因为最后一个值默认是1,所以2只是增加1个数,所以是每隔一个索引输出一次)

>>> s1 = 'abcdefghijk'
>>> print(s1[::2])
acegik

修改切片方向与间隔取值

先输出索引1的值后,每间隔2个索引值输出一个值。

>>> s1 = 'abcdefghijk'
>>> print(s1[1:5:2])
bd

正常取值是从左向右,通过最后一个键值改为-1时,取值顺序变为从右向左

>>> s1 = 'abcdefghijk'
>>> print(s1[-1:-5:-1])
kjih

统计字符串的个数

对应方法:len()

>>> s1 = 'abcdefghijk'
>>> print(len(s1))
11

移除字符串首尾指定的字符

对应方法:strip()

使用场景:用户在输入用户名、验证码等信息时容易多输入空格,这时候就需要把空格去除,让用户体验更好。

username = input('username >>>:').strip()
# 使用strip后,在输入用户名的时候,输入'abc  '的话,也会判定成功。
if username == 'abc':
 print('success!!!')

如果想要指定去除开头结尾的指定字符的话也可以

>>> '$$abc$$'.strip('$')	# 指定去除的字符串为'$'
'abc'

如果只想去除开头或者结尾其中一个地方的字符串可以使用

去除开头也就是左侧指定字符串:lstrip(第一个字母l其实是left的开头字母)

去除结尾也就是右侧指定字符串:rstrip(第一个字母r其实是right的开头字母)

>>> '$$abc$$'.lstrip('$')
'abc$$'
>>> '$$abc$$'.rstrip('$')
'$$abc'

切割字符串中指定的字符

切割字符串:split()

被切割后的字符串以列表的形式展现

>>> 'jack,18,teacher'.split(',')
['jack', '18', 'teacher']
# 使用变量的方式调用此方法
>>> s1 = 'jack,18,teacher'
>>> s1.split(',')
['jack', '18', 'teacher']

也可以为各个数据值指定变量

>>> s1 = 'jack,18,teacher'
>>> name, age, job = s1.split(',')
>>> print(name, age, job)
jack 18 teacher

指定切割对象数量,使用maxsplit参数

>>> s1 = 'jack,18,teacher'
>>> print(s1.split(',',maxsplit=1))
['jack', '18,teacher']	# 可以看到切割成了两份

指定切割对象数量,并进行反向切割:rsplit()

>>> s1 = 'jack,18,teacher'
>>> print(s1.rsplit(',',maxsplit=1))
['jack,18', 'teacher']

字符串格式化输出

格式化输出:format()

第一种使用方法:当作占位符使用,与%s类似的使用方法

>>> res = 'The IP address is {}, Port is {}'.format('1.1.1.1','3389')
>>> print(res)
The IP address is 1.1.1.1, Port is 3389

第二种,根据索引取值,可以反复使用

>>> res = 'The IP address is {0}, Port is {1}, The{0} cannot conmunicate!'.format('1.1.1.1','3389')
>>> print(res)
The IP address is 1.1.1.1, Port is 3389, The1.1.1.1 cannot conmunicate!

第三种,类似于字典形式调用,见名知意

>>> res = 'The IP address is {addr}, Port is {port}, The{addr} cannot conmunicate!'.format(addr='1.1.1.1',port='3389')
>>> print(res)
The IP address is 1.1.1.1, Port is 3389, The1.1.1.1 cannot conmunicate!

第四种,先指定变量,再进行调用

>>> name = input('username >>>:')	# 搭配input使用,直接给变量赋值
username >>>:abcde	# 输入用户名
>>> age = input('age >>>:')	# 输入用户年龄
age >>>:18	# 年龄为18
>>> res = f'my name is {name},age is {age}' # 开头加一个f,并将内容使用引号引起来进行调用
>>> print(res)
my name is abcde,age is 18  # 可以看到调用成功

额外知识,可以让变量补全空位,达到对齐的效果,在调用变量值的时候,加上 X:>N 表示向右缩进N个字符并且使用X补齐,不输入X则默认使用空格。如果加上 X:<N表示左侧的N个字符使用X补齐。

# 可以看到,输出结果的年龄不对齐,有时候想要输出好看一些的时候,就可以定义缩进值了。
>>> jack_age = 29
>>> jason_age = 18
>>> john_green_age = 15
>>> print(f'''jack is {jack_age} years old,
... jason is {jason_age} years old
... john green is {john_green_age} years old''')
jack is 29 years old,
jason is 18 years old
john green is 15 years old

# 不指定字符补齐
>>> jack_age = 29
>>> jason_age = 18
>>> john_green_age = 15
>>> print(f'''jack is {jack_age:>8} years old,
... jason is {jason_age:>7} years old,
... john green is {john_green_age:>2} years old.''')
jack is 29 years old,		# 变量值的左侧被空格补齐
jason is18 years old,
john green is 15 years old.

# 也可以指定字符补全
>>> print(f'''jack is {jack_age:$<8} years old,
... jason is {jason_age:$<7} years old,
... john green is {john_green_age:$<2} years old.''')
jack is 29$$$$$$ years old,		# 变量值的右侧被指定的$补齐
jason is 18$$$$$ years old,
john green is 15 years old.

大小写相关

将字符串中的字母,全部变为大写:upper()

将字符串中的字母,全部变为小写:lower()

使用场景:用户输入验证码等场景时,可以忽略大小写,让用户体验更好。

>>> s1 = 'aAbBcC2333'
>>> s1.upper()
'AABBCC2333'
>>> s1.lower()
'aabbcc2333'

判断字符串中是否为纯数字

使用方法:isdigit()

>>> s1 = 'aAbBcC2333'
>>> s1.isdigit()
False
>>> s2 = '123456'
>>> s2.isdigit()
True
>>> s3 = '123.456'	# 注意,在引号里面的小数点也是字符串,所以是False
>>> s3.isdigit()
False

替换字符串中指定的内容

>>> s1 = 'aAbBcC2333'
>>> s1.replace('a','G')
'GAbBcC2333'	# 将a替换为G并输出
>>> print(s1)
aAbBcC2333		# 注意,原来的值没有改变,如果想要改变,需要重新赋值

字符串的拼接

使用print拼接

>>> s1 = 'Hello'
>>> s2 = 'World'
>>> print(s1 + s2)
HelloWorld
>>> print(s1 * 5)	# 也支持乘法,多次输出
HelloHelloHelloHelloHello

使用join拼接

>>> print('|'.join(['Hello','World','Welcome']))
Hello|World|Welcome

# 注意,拼接内容必须使用str类型
>>> print('|'.join(['Hello','World',12]))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 2: expected str instance, int found

统计指定字符出现的次数

使用方法:count()

>>> s1 = 'aaaWorld'
>>> s1.count('a')
3

判断字符串开头或者结尾

判断开头:startswith

判断结尾:endswith

>>> s1 = 'aaaWorld'
>>> s1.startswith('a')
True	# 判断成功则为真
>>> s1.startswith('b')
False	# 判断失败则为假
>>> s1.endswith('d')
True
>>> s1.endswith('l')
False

开头字母大写,其余小写

方法:title()

>>> s1 = 'hello world'
>>> s1.title()
'Hello World'
>>> s1 = 'helloworld'
>>> s1.title()
'Helloworld'	# 注意使用空格、标点等进行判断
>>> s1 = 'hello world,welcome you'
>>> s1.title()
'Hello World,Welcome You'

一句话中第一个单词的开头字母大写,其余小写

方法:capitalize()

>>> s1 = 'hello world,welcome you'
>>> s1.capitalize()
'Hello world,welcome you'

大小写转换

>>> s1 = 'aAbBcCdD123'
>>> s1.swapcase()
'AaBbCcDd123'

查找关键字第一次出现在第几个字符(注意从0开始)

方法1:index (如果没有值会报错)

方法2:find (如果没有值会返回 -1)

>>> s1 = 'cccabacd'
>>> s1.index('a')	# 数据值在索引3的位置
3
>>> s1.find('a')	# 数据值在索引3的位置
3
>>> s1.index('e')	# 数据值中没有e,报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found
>>> s1.find('e')	# 数据值中没有e,返回 -1
-1

列表类型

  1. 类型转换

list(其它数据类型),通俗来说,能被for循环的都可以转换成列表。

  1. 操作与方法

列表之索引取值

>>> l1 = [1, 2, 3]
>>> print(l1[0])
1

列表之切片操作

>>> l1 = ['a', 'b', 'c', 'd', 'e', 'f']
>>> print(l1[0:5])
['a', 'b', 'c', 'd', 'e']
>>> print(l1[-5:-1])
['b', 'c', 'd', 'e']

列表之间隔取值

>>> l1 = ['a', 'b', 'c', 'd', 'e', 'f']
>>> print(l1[0:5:2])
['a', 'c', 'e']

列表之反向取值

>>> l1 = ['a', 'b', 'c', 'd', 'e', 'f']
>>> print(l1[::-1])
['f', 'e', 'd', 'c', 'b', 'a']
>>> print(l1[-1:-3:-1])
['f', 'e']

列表之统计列表中数据值的个数

使用方法:len()

>>> l1 = ['a', 'b', 'c', 'd', 'e', 'f']
>>> print(len(l1))
6

列表之修改列表中的值

>>> l1 = ['a', 'b', 'c', 'd', 'e', 'f']
>>> l1[0] = '666'
>>> print(l1)
['666', 'b', 'c', 'd', 'e', 'f']

列表之在列表结尾添加追加数据值

>>> l1 = ['a', 'b', 'c', 'd', 'e', 'f']
>>> l1.append('666')
>>> print(l1)
['a', 'b', 'c', 'd', 'e', 'f', '666']

列表之在列表任意位置添加新的数据值

>>> l1 = ['a', 'b', 'c', 'd', 'e', 'f']
>>> l1.insert(3,'new')  # 在索引3的位置增加new字符,原来的数据索引值顺延。
>>> print(l1)
['a', 'b', 'c', 'new', 'd', 'e', 'f']

列表之扩展列表 或 合并列表

>>> l1 = [1, 2, 3]
>>> l2 = [3, 4, 5]
>>> print(l1 + l2)  # 只是打印,并不修改原数据值
[1, 2, 3, 3, 4, 5]
>>> l1.extend(l2)	# 将l2中的数据追加到l1列表中
>>> print(l1)
[1, 2, 3, 3, 4, 5]
>>> print(l2)		# 列表l2值不变
[3, 4, 5]

列表之删除表数据

方法1:del() 在内存中删除数据值

>>> l1 = ['a', 'b', 'c', 'd', 'e', 'f']
>>> del(l1[0])
>>> print(l1)
['b', 'c', 'd', 'e', 'f']

方法2:remove() 在内存中删除数据值,并且使用数据值,不使用索引。

>>> l1 = ['a', 'b', 'c', 'd', 'e', 'f']
>>> l1.remove('a')	# 将数据值为a的删除了
>>> print(l1)
['b', 'c', 'd', 'e', 'f']
# 问题,如果有多个a,会如何删除?
>>> l1 = ['a', 'b', 'c', 'd', 'a', 'e', 'f', 'a']
>>> l1.remove('a')
>>> print(l1)
['b', 'c', 'd', 'a', 'e', 'f', 'a']		# 只清理了按从左到右的顺序第一个a

方法3:pop() 将数据弹出,可以将弹出的数据赋值给其它变量

>>> l1 = ['a', 'b', 'c', 'd', 'e', 'f']
>>> l1.pop(0)
'a'		# 这里会输出你要弹出的数据值,如果指定了变量,则可以赋值
>>> print(l1)
['b', 'c', 'd', 'e', 'f']	# 原列表中的a被弹出

列表之列表的排序

使用方法:sort()

>>> l1 = ['d', 'c', 'b', 'a']
>>> l1.sort()
>>> print(l1)
['a', 'b', 'c', 'd']
>>> l2 = [5, 2, 1, 6, 9]
>>> l2.sort()
>>> print(l2)
[1, 2, 5, 6, 9]

倒序排序,加参数reverse(翻译为中文:相反、颠倒等意思)

>>> l1 = ['a', 'b', 'c', 'd']
>>> l2 = [5, 2, 1, 6, 9]
>>> l1.sort(reverse = True)
>>> l2.sort(reverse = True)
>>> print(l1)
['d', 'c', 'b', 'a']
>>> print(l2)
[9, 6, 5, 2, 1]

列表之统计列表中的数据值出现的次数

使用方法:count()

>>> l1 = ['aa', 'bc', 'cd', 'd']
>>> l1.count('d')		# 注意,是按整个字符串进行匹配的,不是单个字母
1
>>> l1.count('cd')
1

列表之列表倒序输出

>>> l2 = [5, 2, 1, 6, 9]
>>> l2.reverse()
>>> print(l2)
[9, 6, 1, 2, 5]		# 注意,只是反着输出,并不是反向排序

字典类型

  1. 类型转换

使用dict(),但是dict非常麻烦,一般不会使用这种方法进行转换,不如直接手写。

>>> print(dict([('name','pwd'),('jason',123)]))
{'name': 'pwd', 'jason': 123}
  1. 操作与方法

字典之查询

按键取值,但有一个缺点,如果键在字典中不存在,则会报错。

>>> d1 = {'username': 'jack', 'age': 18}
>>> print(d1['username'])
jack
>>> print(d1['job'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'job'

使用方法:get()

推荐使用,如果键在字典中不存在,只会返回None或指定的值。

>>> d1 = {'username': 'jack', 'age': 18}
>>> print(d1.get('username'))
jack
>>> print(d1.get('job'))	# 默认返回None,不会报错
None
>>> print(d1.get('job', 'error!!!!'))	# 第二个值定义返回的值
error!!!!

字典之修改值

通过键进行修改,注意,如果键在字典中不存在,则修改会变为增加键值。

>>> d1 = {'username': 'jack', 'age': 18}
>>> d1['age'] = 99
>>> print(d1)
{'username': 'jack', 'age': 99}

字典之增加值

只要字典中键不存在,则使用修改的方法就会变为增加键值。

>>> d1 = {'username': 'jack', 'age': 18}
>>> d1['job'] = 'Caption'
>>> print(d1)
{'username': 'jack', 'age': 18, 'job': 'Caption'}

字典之删除键值

方法一:del()

>>> d1 = {'username': 'jason', 'job': 'Caption', 'age': 18}
>>> del d1['job']
>>> print(d1)
{'username': 'jason', 'age': 18}

方法二:pop() 注意:此方法与列表中的pop方法一样,可以将弹出(删除)的值赋值给新的变量

>>> d1 = {'username': 'jason', 'job': 'Caption', 'age': 18}
>>> d1.pop('job')
'Caption'	# 此时可以将这个'Caption'赋值给新的变量
>>> print(d1)
{'username': 'jason', 'age': 18}

方法三:popitem 注意:此方法只能删除最后一个加入字典的键值对,无法指定删除哪个

>>> d1 = {'username': 'jason', 'job': 'Caption', 'age': 18}
>>> d1.popitem()	# 将最后一个加入字典的键值删除
('age', 18)
>>> print(d1)
{'username': 'jason', 'job': 'Caption'}

>>> d1 = {'username': 'jason', 'job': 'Caption', 'age': 18}
>>> d1.popitem('username')		# 可以看到,不可以指定删除哪个键值
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: popitem() takes no arguments (1 given)

字典之统计键值对的个数

使用方法:len()

>>> d1 = {'username': 'jason', 'job': 'Caption', 'age': 18}
>>> print(len(d1))
3

字典之获取字典中所有键

使用方法:keys()

>>> d1 = {'username': 'jason', 'job': 'Caption', 'age': 18}
>>> d1.keys()
dict_keys(['username', 'job', 'age'])

字典之获取字典中所有值

使用方法:values()

>>> d1 = {'username': 'jason', 'job': 'Caption', 'age': 18}
>>> d1.values()
dict_values(['jason', 'Caption', 18])

字典之获取字典中键值对数据

使用方法:items()

>>> d1 = {'username': 'jason', 'job': 'Caption', 'age': 18}
>>> d1.items()
dict_items([('username', 'jason'), ('job', 'Caption'), ('age', 18)])

字典之快速生成值相同的字典

使用方法:dict.fromkeys() 注意:值为三个键共享,所以无论为哪一个键增加值,其它键都会看到。

>>> print(dict.fromkeys(['name', 'job', 'age'], 123))
{'name': 123, 'job': 123, 'age': 123}

>>> d1 = dict.fromkeys(['name', 'job', 'age'], [])
>>> d1['name'].append('jason')		# 为name 增加一个值'jason'
>>> d1['job'].append('Caption')		# 为job 增加一个值'Caption'
>>> d1['age'].append(18)			# 为age 增加一个值18
>>> print(d1)				# 我们想要的结果应该是{'name': 'jason', 'job': 'Caption', 'age': 18},但请看输出的结果
{'name': ['jason', 'Caption', 18], 'job': ['jason', 'Caption', 18], 'age': ['jason', 'Caption', 18]}

元组类型

  1. 类型转换

tuple(数据值) 说明:可以被for循环的数据值都可以转换为tuple

>>> s1 = 'abcde'
>>> tuple(s1)
('a', 'b', 'c', 'd', 'e')
  1. 方法与操作

索引取值

>>> s1 = ('a', 'b', 'c', 'd', 'e')
>>> print(s1[0])
a

切片取值

>>> s1 = ('a', 'b', 'c', 'd', 'e')
>>> print(s1[0:1])
('a',)	# 注意取一个值的时候会有一个逗号,指定变量的时候也一样,结尾加上逗号才算是元组,否则算是其它数据类型

间隔取值

>>> s1 = ('a', 'b', 'c', 'd', 'e')
>>> print(s1[0:4:2])
('a', 'c')

反向取值等都与列表相同

>>> s1 = ('a', 'b', 'c', 'd', 'e')
>>> print(s1[-1:-3:-1])
('e', 'd')

元组之统计元组中数据值的个数

使用方法:len()

>>> s1 = ('a', 'b', 'c', 'd', 'e')
>>> print(len(s1))
5

元组之统计一个数据值出现的次数

使用方法:count()

>>> s1 = ('a', 'b', 'c', 'd', 'e', 'a')
>>> s1.count('a')
2

元组之查看一个数据值对应的索引值

使用方法:index() 注意:如果数据值重复的话,只能看到从左向右第一个数据值的对应索引值

>>> s1 = ('a', 'b', 'c', 'c', 'd')
>>> print(s1.index('c'))
2

集合类型

  1. 类型转换

set(数据值)

注意: 集合内数据必须是不可变类型(整型 浮点型 字符串 元组)

​ 集合内的数据也是无序的,没有索引的概念

  1. 操作与方法

集合之去重

去掉数据值内重复的值,只要将数据类型转换为set就会自动去重,但是注意:集合去重无法保留原先数据的排序顺序

>>> l1 = [11, 22, 33, 11, 22, 55, 66]
>>> s1 = {11, 33, 55, 22, 99, 77, 11, 33, 22}
>>> print(set(s1))
{33, 99, 22, 55, 11, 77}
>>> print(set(l1))
{33, 66, 11, 22, 55}

集合之取两个元组中相同的值

使用方法:两个值之间使用'&' 或者使用方法intersection (& 等同于 intersection)

>>> s1 = {'abc', 'ccc', 'qqq', 'ddd', 'lll'}
>>> s2 = {'cba', 'ccc', 'ddd', 'qqq', 'bbb'}
>>> print(s1 & s2)
{'qqq', 'ccc', 'ddd'}
>>> print(s1.intersection(s2))
{'qqq', 'ccc', 'ddd'}

集合之取前面集合有,后面集合没有的值

使用方法:两个值之间使用'-' 或者使用方法difference (- 等同于 difference)

>>> s1 = {'abc', 'ccc', 'qqq', 'ddd', 'lll'}
>>> s2 = {'cba', 'ccc', 'ddd', 'qqq', 'bbb'}
>>> print(s1 - s2)
{'lll', 'abc'}
>>> print(s1.difference(s2))
{'lll', 'abc'}

集合之取两个元组中所有的值,且去掉重复值

使用方法:两个值之间使用 '|' 或者使用方法union (| 等同于 union)

>>> s1 = {'abc', 'ccc', 'qqq', 'ddd', 'lll'}
>>> s2 = {'cba', 'ccc', 'ddd', 'qqq', 'bbb'}
>>> print(s1 | s2)
{'cba', 'lll', 'bbb', 'ccc', 'ddd', 'abc', 'qqq'}
>>> print(s1.union(s2))
{'cba', 'lll', 'bbb', 'ccc', 'ddd', 'abc', 'qqq'}

元组之取两个元组中,独有的值(就是去掉相同的部分,输出不同的部分)

使用方法:两个值之间使用 '^' 或者使用方法 symmetric_difference (^ 等同于 symmetric_difference)

>>> s1 = {'abc', 'ccc', 'qqq', 'ddd', 'lll'}
>>> s2 = {'cba', 'ccc', 'ddd', 'qqq', 'bbb'}
>>> print(s1 ^ s2)
{'cba', 'abc', 'lll', 'bbb'}
>>> print(s1.symmetric_difference(s2))
{'cba', 'abc', 'lll', 'bbb'}

可变类型与不可变类型

  1. 可变类型的特点:
  2. 列表在调用内置方法之后修改的就是自身,并没有产生一个新的结果。
  3. 变量的值改变,内存地址不会改变
>>> l1 = [1, 2]
>>> id(l1)
2242835102344
>>> l1.append(3)  # 修改的是自身,并没有产生一个新的结果
>>> id(l1)
2242835102344	# 内存不变
>>> print(l1)
[1, 2, 3]		# 在内存不变的情况下,数据值发生了改变
  1. 不可变类型的特点:
  2. 字符串在调用内置方法之后并不会修改自己,而是产生了一个新的结果。
  3. 变量的值改变,内存地址肯定会发生改变。
>>> s1 = '$$$abc$$$'
>>> id(s1)
2242835110960
>>> s1.strip('$')
'abc'	# 产生了一个新的结果
>>> print(s1)
$$$abc$$$	# 数据值并不会改变
>>> id(s1)
2242835110960	# 内存地址没有变化
# 这个时候,如果想要改变结果,需要对变量重新赋值
>>> s1 = s1.strip('$')
>>> print(s1)
abc
>>> id(s1)
2242835112768  # 重新赋值,内存地址肯定会发生改变

标签:内置,Python,18,s1,常见,l1,print,age,d1
From: https://www.cnblogs.com/smyz/p/16936515.html

相关文章

  • python之路38 SQL注入问题 索引触发器 事务 存储过程 函数 流程控制
    SQL注入问题怪像1:输对用户名就可以登录成功怪像2:不需要对的用户名和密码也可以登录成功SQL注入:利用特殊符号的组合产生特殊的含义从而避开正常的业务逻辑select......
  • 从零开始学Python【37】--朴素贝叶斯模型(理论部分)
    【知识铺垫】在介绍如何使用贝叶斯概率公式计算后验概率之前,先回顾一下概率论与数理统计中的条件概率和全概率公式:如上等式为条件概率的计算公式,表示在已知事件A的情况下事......
  • build a python env on ubuntu20.04
    buildapythonenvonubuntu20.04fixvirtualenvwarpper(Ubuntu20.04安装virtualenv方法以及安装过程中遇到的问题处理)[https://blog.csdn.net/qq_42296146/article/d......
  • python请求nginx basic认证的页面
    python请求nginxbasic认证的页面问题:python在请求过程中会遇到nginx反向代理并通过basic设置了用户名密码校验的页面或者接口,此时直接requests请求回返回401,那么下面就......
  • Python后端开发(主Django)面试题
    最近两个后端同事离职了,帮忙面试了些后端开发的实习生,虽然有过一些后端经验,但我不是主要写后端的,复习了下Django也稍微准备了一些主要是Django相关的面试题,数据库相关部分额......
  • Python调用百度地图api获取起点终点距离和预估时长
    去百度地图开放平台申请API的AKhttps://lbsyun.baidu.com/apiconsole/center#/homeimportpandasaspdimportrequests,jsonAK="xxxx"#获取位置defgetPos......
  • python爬取m3u8视频文件
    importrequestsimportosimportaiohttpimportasynciofirst_m3u8_url="https://cdn.zoubuting.com/20221129/waHIjBSS/index.m3u8"headers={'User-Agent......
  • python性能调优之key-query
    近期接触到一个性能调优的问题,需要在mongodb中比对大约100G的csv文件的key在mongodb中是否存在baseline首先做一个什么优化都没有的情况下的基准测试:bat......
  • python-比较两个列表中的相同元素和不同元素
    由于两个列表(List)中可能会存在重复的元素,所以我们可以将列表转化成集合(set)进行去重,然后计算交集和差集。A=['1','2','3']B=['2','4','5']##计算交集print(str(......
  • PYTHON 控制语句
    1.1if语句1.1.1if结构if条件: 代码块如果条件成立(True),则执行代码块。score=100ifscore>=90:print("优秀")1.1.2if-else结构if条件:代码......