-
集合set,无序的不重复元素序列
方法 | 描述 |
---|---|
s.add(obj) | 为集合添加元素 |
s.update() | 给集合添加元素,参数为列表,元组,字典等,也可以有多个参数 |
s.clear() | 移除集合中的所有元素 |
s.copy() | 拷贝一个集合 |
s.difference(s1) | 返回集合,元素在s中不在s1中 |
s.discard(obj) | 删除集合中指定的元素,元素不存在时不会报错 |
intersection() | 返回集合的交集,返回新的set,如:z = x.intersection(y) |
intersection_update() | 返回集合的交集。在原有集合上移除,如:x = {1,2,3}, y = {1,4,5} , x.intersection_update(y)后,x={1} |
s1.isdisjoint(s2) | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
s1.issubset(s2) | 判断指定集合是否为该方法参数集合的子集。s1是否为s2的子集 |
s1.issuperset(s2) | 判断该方法的参数集合是否为指定集合的子集。s2是否为s1的子集 |
s.pop() | 随机移除元素 |
s.remove(obj) | 移除指定元素,元素不存在时报错KeyError: 'xx' |
new_s=s1.symmetric_difference(s2) | 返回两个集合中不重复的元素的新集合 |
s1.symmetric_difference_update(s2) | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。将不重复元素存入s1 |
new_s = s1.union(s2) | 返回两个集合的并集 |
len(s) | 输出集合的长度 |
max(s) | 输出集合的最大值 |
min(s) | 输出集合最小值 |
-
字典dict
方法 | 描述 |
---|---|
popitem() | 返回并删除字典中的最后一对键和值。 |
pop(key[,default]) | 删除字典 key(键)所对应的值,返回被删除的值。key不存在时无default会报错KeyError: 'xx',有default则返回default |
dict.values() | 返回一个字典所有值的视图对象 |
dict.keys() | 返回一个字典所有键的视图对象 |
dict.items() | 以列表返回一个视图对象 |
dict.update(dict2) | 把字典dict2的键/值对更新到dict里 |
dict.setdefault(key, default=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
key in dict | 如果键在字典dict里返回true,否则返回false |
dict.get(key, default=None) | 返回指定键的值,如果键不在字典中返回 default 设置的默认值,没设置default则返回None |
dict.fromkeys() | 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
dict.copy() | 返回一个字典的浅复制 |
dict.clear() | 删除字典内所有元素 |
len(dict) | 计算字典元素个数,即键的总数。 |
-
列表list
方法 | 描述 |
---|---|
len(list) | 列表元素个数 |
max(list) | 返回列表元素最大值 |
min(list) | 返回列表元素最小值 |
list(seq) | 将元组转换为列表 |
list.append(obj) | 在列表末尾添加新的对象 |
list.count(obj) | 统计某个元素在列表中出现的次数 |
list.extend(seq) | 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
list.index(obj) | 从列表中找出某个值第一个匹配项的索引位置,不存在时报错ValueError: 'xx' is not in list |
list.insert(index, obj) | 将对象插入列表 |
list.pop([index=-1]) | 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
list.remove(obj) | 移除列表中某个值的第一个匹配项,不存在时报错ValueError: list.remove(x): x not in list |
list.reverse() | 反向列表中元素 |
list.sort( key=None, reverse=False) | 对原列表进行排序 |
list.clear() | 清空列表 |
list.copy() | 复制列表 |
-
元组tuple,元素不能修改
操作 | 描述 |
---|---|
len(tuple) | 计算元组元素个数。 |
max(tuple) | 返回元组中元素最大值。 |
min(tuple) | 返回元组中元素最小值。 |
tuple(iterable) | 将可迭代系列转换为元组。 |
tup[1] | 读取第二个元素 |
tup[-2] | 反向读取,读取倒数第二个元素 |
tup[1:] | 截取元素,从第二个开始后的所有元素。 |
tup[1:4] | 截取元素,从第二个开始到第四个元素(索引为 3)。 |
-
字符串string
操作 | 描述 |
---|---|
capitalize() | 将字符串的第一个字符转换为大写 |
count(str, beg= 0,end=len(string)) | 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
endswith(suffix, beg=0, end=len(string)) | 检查字符串是否以 suffix 结束,如果 beg 或者 end 指定则检查指定的范围内是否以 suffix 结束,如果是,返回 True,否则返回 False |
find(str, beg=0, end=len(string)) | 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
index(str, beg=0, end=len(string)) | 跟find()方法一样,只不过如果str不在字符串中会报一个异常。 |
isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
isalpha() | 如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False |
isdigit() | 如果字符串只包含数字则返回 True 否则返回 False.. |
islower() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
isspace() | 如果字符串中只包含空白,则返回 True,否则返回 False. |
isupper() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
len(string) | 返回字符串长度 |
lower() | 转换字符串中所有大写字符为小写. |
lstrip() | 截掉字符串左边的空格或指定字符。 |
max(str) | 返回字符串 str 中最大的字母。 |
min(str) | 返回字符串 str 中最小的字母。 |
replace(old, new [, max]) | 把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。 |
rfind(str, beg=0,end=len(string)) | 类似于 find()函数,不过是从右边开始查找. |
rindex( str, beg=0, end=len(string)) | 类似于 index(),不过是从右边开始. |
rstrip() | 删除字符串末尾的空格或指定字符。 |
split(str="", num=string.count(str)) | 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
startswith(substr, beg=0,end=len(string)) | 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
strip([chars]) | 在字符串上执行 lstrip()和 rstrip() |
swapcase() | 将字符串中大写转换为小写,小写转换为大写 |
title() | 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
istitle() | 如果字符串是标题化的(见 title())则返回 True,否则返回 False |
upper() | 转换字符串中的小写字母为大写 |
isdecimal() | 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
-
数字number
操作 | 描述 |
---|---|
abs(x) | 返回数字的绝对值,如abs(-10) 返回 10 |
ceil(x) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 |
floor(x) | 返回数字的下舍整数,如math.floor(4.9) 返回 4 |
cmp(x, y) | 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃,使用 (x>y)-(x<y) 替换。 |
log(x) | 如math.log(math.e) 返回1.0,math.log(100,10) 返回2.0 |
max(x1, x2,...) | 返回给定参数的最大值,参数可以为序列。 |
min(x1, x2,...) | 返回给定参数的最小值,参数可以为序列。 |
modf(x) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。import math a,b = math.modf(6.2) print(a,b) # 0.20000000000000018 6.0 |
pow(x, y) | x**y 运算后的值。 |
round(x [,n]) | 返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。 |
sqrt(x) | 返回数字x的平方根。from math import sqrt print(sqrt(4)) # 2.0 |
choice(seq) | 从序列的元素中随机挑选一个元素,比如random.choice(range(10)) ,从0到9中随机挑选一个整数。 |
randrange ([start,] stop [,step]) | 从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1,例如:print(random.randrange(11,29,1)) ,输出12 |
random() | 随机生成下一个实数,它在(0,1)范围内。例如: r = random.random() ,r值为0.46334210833597167 |
shuffle(lst) | 将序列的所有元素随机排序,例如:random.shuffle(list) ,执行后会随机打乱list的值 |
uniform(x, y) | 随机生成下一个实数,它在[x,y]范围内。例如:print(random.uniform(2,8)) ,输出6.109074709791044 |
-
进制转化
# 十进制转十六进制
print(hex(21)) # 0x15
# 十进制转八进制
print(oct(21)) # 0o25
# 十进制转二进制
print(bin(21)) # 0b10101
# 去除二进制0b
print(bin(21)[2:]) # 10101
# 左侧填充零,补齐位数
print(bin(21)[2:].zfill(2*4)) # 00010101
# 十六进制转十进制
print(int('0x15',16)) # 21
# 八进制转十进制
print(int('0o25',8)) # 21
# 二进制转十进制
print(int('0b10101',2)) # 21
-
多维数组转为一维数组
multi_array = [[1,2,3],[4,5],[6],[7,8,9]]
linear_array = [i for item in multi_array for i in item]
print(linear_array) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
-
同时获取商和余数
print(divmod(10,3)) # (3, 1)
quotient,remainder = divmod(10,3)
print(quotient,remainder) # 3 1
-
开N次方
x=64
n=6
print(x**(1/n)) # 2.0
-
N次方
x=2
n=6
print(x**n) # 64
-
0~N 求和
# 递归实现
def func(n):
if n == 0:
return 0
else:
return n + func(n - 1)
print(func(4)) # 10
# 简化公式计算
def func_b(n):
return n * (n + 1) / 2
print(func_b(4)) # 10.0
- 0~N求积
# 递归实现
def func(n):
if n == 1:
return 1
else:
return n * func(n - 1)
print(func(4)) # 24
-
斐波那契数列
def fab_a(n):
"""生成器函数实现"""
a, b, count = 0, 1, 0
while count < n:
yield a
a, b = b, a + b
count += 1
def fab_b(n):
"""递归函数实现"""
if n <= 1:
return n
else:
return fab_b(n - 1) + fab_b(n - 2)
f = fab_a(10)
while True:
try:
print(next(f), end=' ') # 0 1 1 2 3 5 8 13 21 34
except StopIteration:
break
print()
for i in range(10):
print(fab_b(i), end=' ') # 0 1 1 2 3 5 8 13 21 34
-
插入排序
def insert_sort(lst: list) -> list:
"""插入排序
1. 从第2位开始为未排序序列
2. 未排序序列中从前往后依次取出1个数与已排序序列从后往前依次比较
3. 有序序列循环比较过程中大于等于取出值需往后移1位
4. 最后插入取出值到有序序列
"""
for i in range(1, len(lst)):
j = i - 1
tmp = lst[i]
while tmp < lst[j] and j >= 0:
lst[j + 1] = lst[j]
j -= 1
lst[j + 1] = tmp
init_list = [8, 6, 9, 10, 2, 16, 0, 3, 7, 4, 2]
insert_sort(init_list)
print(init_list) # [0, 2, 2, 3, 4, 6, 7, 8, 9, 10, 16]
-
冒泡排序
-
def bubble_sort(lst: list) -> None:i = 1while i < len(lst): # 轮询次数for j in range(len(lst) - i): # 每轮比较次数if lst[j] > lst[j + 1]:lst[j], lst[j + 1] = lst[j + 1], lst[j]i += 1# 改进def bubble_sort(lst: list) -> None:i = 1exchanged = True # 是否发生交换while i < len(lst) and exchanged:exchanged = Falsefor j in range(len(lst) - i):if lst[j] > lst[j + 1]:lst[j], lst[j + 1] = lst[j + 1], lst[j]exchanged = Truei += 1
-
选择排序
def selection_sort(lst:list)->None:
"""每轮查询未排序序列的最小值,排到已排序序列末尾
1. 每轮设置未排序序列第1个为基准值
2. 从前往后查,记录最小值的索引
3. 遍历一轮后,交换未排序第1个和最小索引位置的值
"""
for i in range(len(lst)):
min_index = i
for j in range(i+1,len(lst)):
if lst[min_index] > lst[j]:
min_index = j
lst[i],lst[min_index] = lst[min_index],lst[i]
-
isdigit、isdecimal、isnumeric的区别
dec = '10'
b = b'11'
chi = '六'
arab = 'IV'
print(dec.isdigit()) # true
print(dec.isnumeric()) # true
print(dec.isdecimal()) # true
print(b.isdigit()) # true
print(b.isnumeric()) # AttributeError: 'bytes' object has no attribute 'isdecimal'
print(b.isdecimal()) # AttributeError: 'bytes' object has no attribute 'isdecimal'
print(chi.isdigit()) # False
print(chi.isnumeric()) # True
print(chi.isdecimal()) # False
print(arab.isdigit()) # False
print(arab.isnumeric()) # False
print(arab.isdecimal()) # False
-
判断一个字符是否包含大小写字母、数字、符号
import string
a = '字符串'
count = 0
for item in string.ascii_lowercase: # 小写字母
if item in a:
count += 1
break
for item in string.ascii_uppercase: # 大写字母
if item in a:
count+=1
break
for item in string.digits: # 数字
if item in a:
count+=1
break
for item in string.punctuation: # 符号
if item in a:
count+=1
break
-
pytest使用
import pytest
# 固件
@pytest.fixture(autouse=True)
def fix():
print('This is a fixture function!')
yield
print('end')
class TestClass:
def test_class_one(self):
assert 1 == 1
def test_class_two(self):
assert 1 in [1, 2, 3]
def test_one():
assert 1 == 1
# 跳过
@pytest.mark.skip(reason='跳过测试')
def test_two():
assert 'a' in 'bac'
# 条件跳过
@pytest.mark.skipif(pytest.__version__ < '8', reason='版本小于7')
def test_three():
assert 4 > 5
@pytest.mark.run(order=2) # 第2个执行
@pytest.mark.xfail(pytest.__version__ < '8', reason='不支持的版本')
def test_four():
assert 2 == 2
# 设置执行顺序,需安装pytest-ordering
@pytest.mark.parametrize(('var', 'pwd'), [(1, 9), (2, 4), (3, 9)])
@pytest.mark.run(order=1) # 第1个执行
def test_five(var, pwd):
assert var + pwd < 11
# 失败重试 ,需安装pytest-rerunfailures
# 方式一:命令行失败重试 pytest -v --reruns 2 --reruns-delay 5 test_rerun.py
# 方式二:脚本中失败重试
@pytest.mark.flaky(reruns=2, reruns_delay=3) # 重试两次,每次延时3秒执行
def test_six():
assert 'a' in ['b', 'c']
- 格式说明符号
写在表达式后面,可以更好地控制格式化值的方式
# 将 pi 舍入到小数点后三位
import math
print(f'The value of pi is approximately {math.pi:.3f}.') # The value of pi is approximately 3.142.
# 在 ':' 后传递整数,为该字段设置最小字符宽度,常用于列对齐
table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
for name, phone in table.items():
print(f'{name:10} ==> {phone:10d}')
# Sjoerd ==> 4127
# Jack ==> 4098
# Dcab ==> 7678
# 可以在格式化前转换值。 '!a' 应用 ascii() ,'!s' 应用 str(),'!r' 应用 repr()
animals = 'eels'
print(f'My hovercraft is full of {animals}.') # My hovercraft is full of eels.
print(f'My hovercraft is full of {animals!r}.') # My hovercraft is full of 'eels'.
# = 说明符可被用于将一个表达式扩展为表达式文本、等号再加表达式求值结果的形式。【此特性是3.12新增,老版本不支持】
bugs = 'roaches'
count = 13
area = 'living room'
print(f'Debugging {bugs=} {count=} {area=}') # Debugging bugs='roaches' count=13 area='living room'
- 作用域和命名空间
# global 语句用于表明特定变量在全局作用域里,并应在全局作用域中重新绑定;nonlocal 语句表明特定变量在外层作用域中,并应在外层作用域中重新绑定。
# 下例演示了如何引用不同作用域和名称空间,以及 global 和 nonlocal 对变量绑定的影响:
def scope_test():
def do_local():
spam = "local spam"
def do_nonlocal():
nonlocal spam
spam = "nonlocal spam"
def do_global():
global spam
spam = "global spam"
spam = "test spam"
do_local()
print("After local assignment:", spam) # After local assignment: test spam
do_nonlocal()
print("After nonlocal assignment:", spam) # After nonlocal assignment: nonlocal spam
do_global()
print("After global assignment:", spam) # After global assignment: nonlocal spam
scope_test()
print("In global scope:", spam) # In global scope: global spam
- 类和实例变量
实例变量用于每个实例的唯一数据,而类变量用于类的所有实例共享的属性和方法
class Dog:
kind = 'canine' # class variable shared by all instances
def __init__(self, name):
self.name = name # instance variable unique to each instance
d = Dog('Fido')
e = Dog('Buddy')
print(d.kind) # 'canine' # shared by all dogs
print(e.kind) # 'canine' # shared by all dogs
print(d.name) # 'Fido' # unique to d
print(e.name) # 'Buddy' # unique to e
# 例如以下代码中的 tricks 列表不应该被用作类变量,因为所有的 Dog 实例将只共享一个单独的列表:
class Dog:
tricks = [] # mistaken use of a class variable
def __init__(self, name):
self.name = name
def add_trick(self, trick):
self.tricks.append(trick)
d = Dog('Fido')
e = Dog('Buddy')
d.add_trick('roll over')
e.add_trick('play dead')
print(d.tricks) #['roll over', 'play dead'] # unexpectedly shared by all dogs
# 正确的类设计应该使用实例变量:
class Dog:
def __init__(self, name):
self.name = name
self.tricks = [] # creates a new empty list for each dog
def add_trick(self, trick):
self.tricks.append(trick)
d = Dog('Fido')
e = Dog('Buddy')
d.add_trick('roll over')
e.add_trick('play dead')
print(d.tricks) # ['roll over']
print(e.tricks) # ['play dead']
# 如果同样的属性名称同时出现在实例和类中,则属性查找会优先选择实例:
class Warehouse:
purpose = 'storage'
region = 'west'
w1 = Warehouse()
print(w1.purpose, w1.region) # storage west
w2 = Warehouse()
w2.region = 'east'
print(w2.purpose, w2.region) # storage east
- 私有变量的名称改写
由于存在对于类私有成员的有效使用场景(例如避免名称与子类所定义的名称相冲突),因此存在对此种机制的有限支持,称为名称改写。 任何形式为 __spam 的标识符(至少带有两个前缀下划线,至多一个后缀下划线)的文本将被替换为 _classname__spam
class Donkey:
__age = 18
_name = 'grig'
gender_ = '男'
__hometown_ = '宜宾'
__height__ = '160cm'
def update(self):
print(f'Donkey\'update')
__update = update
class SubDonkey(Donkey):
def update(self):
print(f'SubDonkey\'update')
__update = update
sb = SubDonkey()
sb.__update() # AttributeError: 'SubDonkey' object has no attribute '__update'AttributeError: 'SubDonkey' object has no attribute '__update'
sb._Donkey__update() # Donkey'update 【发生名称改写】
sb.__update() # AttributeError: 'SubDonkey' object has no attribute '__update'
sb._SubDonkey__update() # SubDonkey'update 【发生名称改写】
print(sb._Donkey__age) # 18 【发生名称改写】
print(sb._name) # grig 【未发生名称改写】
print(sb.gender_) # 男 【未发生名称改写】
print(sb._Donkey__hometown_) # 宜宾 【发生名称改写】
print(sb.__height__) # 160cm 【未发生名称改写】
- 将一些带名称的数据项捆绑在一起。 实现这一目标的理想方式是使用 dataclasses
class Employee:
name: str
dept: str
salary: int
emp = Employee('grig', 'clab', 1800) # TypeError: Employee() takes no arguments
# 使用 dataclasses
from dataclasses import dataclass
@dataclass
class Employee:
name: str
dept: str
salary: int
emp = Employee('grig', 'clab', 1800) # TypeError: Employee() takes no arguments
emp.name = 'Bob'
print(emp.name) # Bob
print(emp.salary) # 1800
- 文件通配符
glob 模块提供了一个在目录中使用通配符搜索创建文件列表的函数
import glob
print(glob.glob('*.py')) # ['primes.py', 'random.py', 'quote.py']
- 对于日常文件和目录管理任务, shutil 模块提供了更易于使用的更高级别的接口:
import shutil
shutil.copyfile('data.db', 'archive.db')
shutil.move('/build/executables', 'installdir')
- 命令行参数
命令行参数以列表形式存储在 sys 模块的 argv 属性中
import sys
print(sys.argv)
在命令行中运行 python demo.py one two three 输出的结果
['demo.py', 'one', 'two', 'three']
argparse 模块提供了一种更复杂的机制来处理命令行参数
import argparse
parser = argparse.ArgumentParser(
prog='top',
description='Show top lines from each file')
parser.add_argument('filenames', nargs='+')
parser.add_argument('-l', '--lines', type=int, default=10)
args = parser.parse_args()
print(args)
- statistics 模块计算数值数据的基本统计属性(均值,中位数,方差等)
import statistics
data = [2.75, 1.75, 1.25, 0.25, 0.5, 1.25, 3.5]
print(statistics.mean(data)) # 1.6071428571428572
print(statistics.median(data)) # 1.25
print(statistics.variance(data)) # 1.3720238095238095
- doctest 模块提供了一个工具,用于扫描模块并验证程序文档字符串中嵌入的测试
def average(values):
"""Computes the arithmetic mean of a list of numbers.
>>> print(average([20, 30, 70]))
40.0
>>> print(average((1,2,3)))
2.0
"""
return sum(values) / len(values)
import doctest
doctest.testmod()
- jsonpath 的使用
from jsonpath import jsonpath
d = {
'status_code':200,
'desc':'成功',
'data':[
'123',
'345',
789
]
}
print(jsonpath(d,'$.desc')) # ['成功']
print(jsonpath(d,'$.data[3]')) # False
- python 查用字符
whitespace = ' \t\n\r\v\f'
ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'
ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ascii_letters = ascii_lowercase + ascii_uppercase
digits = '0123456789'
hexdigits = digits + 'abcdef' + 'ABCDEF'
octdigits = '01234567'
punctuation = r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""
printable = digits + ascii_letters + punctuation + whitespace
- ASCII码与字符相互转换
c = 'a'
a = 101
print( c + " 的ASCII 码为", ord(c)) # a 的ASCII 码为 97
print( a , " 对应的字符为", chr(a)) # 101 对应的字符为 e
- 解包
lst = [1, 2]
m1, n1 = lst
print(m1) # 1
print(n1) # 2
dic = {
"ka": 123,
"kb": 234
}
m2, n2 = dic
print(m2) # ka
print(n2) # kb
st = {1, 2}
m3, n3 = st
print(m3) # 1
print(n3) # 2
tup = (1, 2)
m4, n4 = tup
print(m4) # 1
print(n4) # 2
tup = [1, 2, 3]
m5, n5 = tup
print(m5) # ValueError: too many values to unpack (expected 2),字典、集合、元组等也存在这个现象,要求参数个数需要和可迭代对象的元素个数相同
- 去除小数位后的零
a = 12.12300 # 目标结果要求为12.123
b = 12.00 # 目标结果为12
c = 200.12000 # 目标结果为200.12
d = 200.10 # 目标结果为200
e = 11.0 # 目标结果为 11
# 如果直接用str方法,不能达到目的
print(str(a)) # 12.123
print(str(b)) # 12.0
print(str(c)) # 200.12
print(str(d)) # 200.1
print(str(e)) # 11.0
# 使用列表推导式+条件索引可以达到目的
print([str(a),int(a)][int(a)==a]) # 12.123
print([str(b),int(b)][int(b)==b]) # 12
print([str(c),int(c)][int(c)==c]) # 200.12
print([str(d),int(d)][int(d)==d]) # 200.1
print([str(e),int(e)][int(e)==e]) # 11
- 打印列表时,不显示引号
lst = ['1', '2.3', '6']
# 直接打印,显示引号
print(lst) # ['1','2.3','6']
# 打印不显示引号
print('[' + ', '.join(lst) + ']') # [1, 2.3, 6]