单元素数据
在python中,一般不需要特别定义变量的类型,这一点与c++不同。
长整型及整型
如114514、19260817等
对于一个已经定义为int
类型的变量,其大小应当满足
−
2
31
≤
x
≤
2
31
−
1
-2^{31} \leq x \leq 2^{31}-1
−231≤x≤231−1。
如:
x = int( input() )
print(x)
#x >= -2^31 && x <= 2^31 - 1
存疑:对于一个很长的数字x为什么type(x)
的返回值为<class 'int'>
?
浮点型
如1926.0817等
注意! 在python中,浮点数的计算可能会产生误差,如果是要求精确的计算,应当使用decimal模块进行十进制运算,但是此种运算相对于使用float
会有更高的性能消耗,所以在大量数据计算时需要权衡精度与效率。
#此为使用float类型
x = float(4.20)
y = float(2.10)
z = x + y
print(z)
#此为使用decimal模块
from decimal import Decimal
from decimal import getcontext
import decimal
x = 4.20
y = 2.10
getcontext().prec = 3#此处为设置精度(有效数字)
z = Decimal(str(x)) + Decimal(str(y))
#z = x + y
print(z)
布尔型
只有两个值true
和false
,相对应的也可以是1
0
复数
python中内置复数的简单运算
a = 233 + 2.33j
print(a.real)#实数部分
print(a.imag)#虚数部分
print(a.conjugate())#共轭复数
注意!
a = 2.33j
print(a.real)#实数部分
此时的结果是0.0
,所以虚数不能单独存在,它们总是和一个值为 0.0 的实数部分一起构成一个复数
此外,复数的实数部分和虚数部分都是浮点数
多元素数据
列表
1.创建列表
类似于c++中的数组、字符串,但是列表对其中的元素要求不同于c++般严格,比如,一个列表中可以存在多种数据类型
//c++中定义数组
define maxn 5
int a[maxn] = {1,2,3,4}
#python 中定义一个列表
#创建一个普通列表
a = [1,2,3,4,'qwq',"嘿嘿嘿"]
#创建一个空列表
a = []
如上,列表的创建使用方括号,各个元素之间的分隔使用逗号。
2.访问元素
同c++的数组相同,列表的下标是从0开始的一个左闭右开区间。但是,Python的列表支持负数下标,举个例子:
a = [1,2,3,4]
for i in range(-4,4) :
print("{} ".format(a[i]),end = ' ')
其结果为 1 2 3 4 1 2 3 4
也就是说,在列表中,下标是循环的,如果给定的下标不在这个列表下标应有的范围内,python会自动将其转化在此范围内。
注意! python对下标的转换不是无限制的,对于上面的列表a
而言,合法的下标范围是
[
−
4
,
4
)
[-4,4)
[−4,4)
下标:-4 -3 -2 -1 0 1 2 3
元素:1 2 3 4 1 2 3 4
具体访问元素方式如下
a = [1,2,3,4,"qwq",6,"2333"]
#通过下标访问列表a
for i in range(0,6) :
print("{}".format(a[i]),end = ' ')
print("\n")
#直接访问列表a
for i in a :
print(i,end = ' ')
print("\n")
#通过下标访问列表a的部分元素
for i in range(2,5) :
print("%s" % a[i],end = ' ')
print("\n")
#直接访问列表a的部分元素
for i in a[2:5]:
print(i,end = ' ')
运行结果为:
a = [1,2,3,4,"qwq",6,"2333"]
for i in range(0,6) :
print("{}".format(a[i]),end = ' ')
print("\n")
for i in a :
print(i,end = ' ')
print("\n")
for i in range(2,5) :
print("%s" % a[i],end = ' ')
print("\n")
for i in a[2:5]:
print(i,end = ' ')
3.更新列表
格式如下 (index为下标,num为待操作的元素)
- 在列表末尾添加元素
a.append(num)
- 在列表指定位置添加元素
a.insert(index,num)
- 删除列表末尾的元素并返回该值
a.pop(index)
ps:若不给定index的值默认为列表最后的元素,若给定了,则弹出该位置的元素,等效于del - 删除列表指定位置的元素
del a[index]
- 删除指定的元素
a.remove(num)
实例如下
a = [] #创建空列表
x = 10
#向列表的末尾添加新元素
a.append(x)
a.append("qwq")
a.append("2333")
#向列表的指定位置添加新元素
a.insert(2,"嘤嘤嘤")
print(a)
print("\n")
#删除列表中末尾的元素
las = a.pop()
print(a)
#删除列表中指定位置的元素
del a[1] #等效于 a.pop(1)
print(a)
运行结果为
[10, 'qwq', '嘤嘤嘤', '2333']
[10, 'qwq', '嘤嘤嘤']
[10, '嘤嘤嘤']
4.列表的运算
- 返回长度
l = len(list)
- 组合
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = list1 +list2
#list3 = [1, 2, 3, 4, 5, 6]
- 重复
lis = [1, 2, 3]
lis2 = lis * 3
#lis = [1, 2, 3, 1, 2, 3, 1, 2, 3]
- 迭代
lis = [1,2,3]
for i in lis :
print(i)
- 查询
lis = [1,2,3,4]
x = input()
if(x in lis == True) :
print("yes")
5.列表可用函数
lis = [1,2,3]
new_lis = []
obj = "一个元素"
index = None #某个特定的位置的下标
x = input()
#在列表的后方加入一个新的元素
lis.append(obj)
#在指定位置插入一个元素
lis.insert(index,obj)
#在列表末尾加入一个新的列表
lis.extend(new_lis)
#弹出列表中的一个元素
index = None #如果index的值未指定(同左),则默认为最后一个元素
lis.pop(index)
#删除列表中第一个与指定值相同的元素
index = None
lis.remove(obj)
#查询列表的元素个数
len = len(lis)
#查询列表的元素极值
Maxn = max(lis)
Minn = min(lis)
#查询指定值的元素的个数
lis.count(obj)
#反转列表元素的顺序
lis.reverse()
lis1 = [1,2,3]
lis2 = [4,5,6]
x = cmp(lis1,lis2)
def get_sec(a) :
return a[1]
lis = [(1,1),(2,3),(3,2),(4,5),(5,4)]
#!cmp:比较函数,可自定义
#key:排序的关键字
#reserve:True为反转列表元素顺序,False为不反转,不定义时默认为不反转
lis.sort(key = get_sec,reverse = False)
#注意!在python3中,sort取消了cmp这一关键字,若要使用自定义比较函数,则可如下:
import functools
def cmp(a,b):
if a > b : return 1
elif a < b : return -1
else : return 0
lis.sort(key = functools.cmp_to_key(cmp),reverse = False)