Python 学习

数据类型

python有6大数据类型:Numbers(数字)String(字符串)List(列表)Tuple(元组)Dictionary(字典)Set(集合)

不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组); 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

列表[ ](list):有序可改变集合,允许重复数据。 元组( )(tuple):有序不可改变集合,允许重复数据。 集合{ }(set):无序无索引(索引为键值)集合,无重复数据。 字典{ }(dictionary):无序,可变,有索引集合,无重复数据。

转换

int(x)

float(x)

str(x)

tuple(s)

list(s)

set(s)

dict()

set-转换为集合

list=['1','1']
print(set(list))

{'1'}

列表转字符串

my_list = ['apple', 'banana', 'orange']
my_string = ''.join(my_list)
print(my_string)
for i in list:
  print(i,end="")

切片

切片可以应用于任何序列类型,切片的索引是从0开始的。如果你想要获取从第二个元素到第四个元素,应该使用切片my_list[1:4],而不是my_list[2:4]

sequence[start:stop:step]

其中,start 表示起始位置(默认为 0),stop 表示结束位置(默认为序列的长度),step 表示步长(默认为 1)。

例如,对于一个列表 my_list,可以使用以下语法来获取前 3 个元素:

my_list[:3]

如果要获取从第 3 个元素到第 6 个元素(不包括第 6 个元素),可以使用以下语法:

my_list[2:5]

如果要获取从第 1 个元素到最后一个元素,可以省略 stop 参数:

my_list[1:]

如果要获取从第 2 个元素到倒数第 2 个元素,可以使用以下语法:

my_list[1:-1]

如果要以步长为 2 获取所有元素,可以使用以下语法:

my_list[::2]

需要注意的是,切片语法中的 stop 参数所指定的位置是不包括在切片结果中的。因此,如果要获取所有元素,可以省略 startstop 参数,而只指定步长。

切片也可以用于字符串和元组等序列类型,语法和使用方法与列表类似。

列表推导式

列表推导式是一种简洁而强大的技巧,它使得我们可以用一行代码创建一个列表。语法格式为:[expression for item in iterable],其中 expression 是要放在结果列表中的表达式,item 是迭代器中的每个元素,iterable 是一个可迭代的对象,如列表、元组或集合。

在这个例子中,我们使用了 range 函数来创建一个包含 1 到 50 之间数字的范围。然后,我们使用列表推导式来生成 URL 列表,其中我们将 f"https://test.com/#p{i}" 表达式作为结果列表中的表达式式将在每个迭代步骤中使用当前循环变量 i 的值来替换字符串中的 {i},从而生成一系列 URL。

urls = [
    f"https://test.com/#p{page}"
    for page in range(1, 51)
]

进制转换

int 转10

s = '1001'
print(int(s,2)) #二进制转10进制
print(int(s,8)) #八进制转10进制
print(int(s,16)) #十六进制转10进制

hex 转16

print(hex(1033)) #十进制转十六进制

bin 转2

print(bin(10)) #十进制转二进制

oct 转8

print(oct(100))

format

format(x,‘b’) 转2

format(x,‘o’) 转8

format(x,’d’) 转10

format(x,‘x’) 转16

>>> format(0b11,'b')     #二进制转换为二进制
'11'
>>> format(0o11,'b')    #八进制转换为二进制
'1001'
>>> format(11,'b')    #十进制转换为二进制
'1011'
>>> format(0x11,'b')    #十六进制转换为二进制
'10001'
# 不带前缀
print('不带前缀')
print('{:b}'.format(256))
print('{:o}'.format(256))
print('{:d}'.format(256))
print('{:x}'.format(256))
# 带前缀
print('带前缀')
print('{:#b}'.format(256))
print('{:#o}'.format(256))
print('{:#d}'.format(256))
print('{:#x}'.format(256))


不带前缀------------------------- 
100000000
400
256
100
带前缀------------------------- 
0b100000000
0o400
256
0x100

格式化输出

format

关键字

print('{name} is {age} years old!'.format(name='xiaoming',age=10))
输出: xiaoming is 10 years old!

位置

print('{0} is {1} years old'.format('xiaohua','21'))
# 输出: xiaohua is 21 years old

精度

print('{:.1f}'.format(4.234324525254))
print('{:.4f}'.format(4.1))
# 输出
4.2
4.1000

%

进制

%o ——八进制

%d ——十进制

%x ——十六进制

>>> print('%o' % 20)
24
>>> print('%d' % 20)
20
>>> print('%x' % 20)
14

浮点数

%f ——保留小数点后面六位有效数字 %.3f ——保留小数点后面三位有效数字 %e ——保留小数点后面六位有效数字,科学计数法输出 %.3e ——保留3位小数位,科学计数法输出 %g ——在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法 %.3g保留3位有效数字,使用小数或科学计数法

print("%.2f"%m)

余数和除数

现在时间是 ab 分,请问 t 分钟后,是几点几分?

a = int(input())
b = int(input())
t = int(input())
m = (t+b) // 60
n = (t+b) % 60
a += m
print(a)
print(n)

排序

sorted

对列表排序

list = [1, 2 ,5, 7, 2, 4]
print(sorted(list))

Output[1, 2, 2, 4, 5, 7]

list = ['d', 'c', 'f', 'a', 'z']
print(sorted(list))

Output['a', 'c', 'd', 'f', 'z']

list = ['vz', '1bf', 'gc', 'ak', '2qz']#若为字符串,则跟据第一位的数字-字母顺序来排列
print(sorted(list))

Output['1bf', '2qz', 'ak', 'gc', 'vz']

精确浮点数运算

>>> from decimal import Decimal
>>> a = Decimal('4.2')
>>> b = Decimal('2.1')
>>> a + b
Decimal('6.3')
>>> print(a + b)
6.3
>>> (a + b) == Decimal('6.3')
True
0%