Python 学习 ---数据类型

单元素数据

在python中,一般不需要特别定义变量的类型,这一点与c++不同。

长整型及整型

如114514、19260817等

对于一个已经定义为int类型的变量,其大小应当满足 − 2 31 ≤ x ≤ 2 31 − 1 -2^{31} \leq x \leq 2^{31}-1 231x2311
如:

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)

布尔型

只有两个值truefalse,相对应的也可以是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()
  • cmp

    cmp有特殊的比较顺序,详情如下:
    在这里插入图片描述
lis1 = [1,2,3]
lis2 = [4,5,6]

x = cmp(lis1,lis2)
  • sort

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)

元组

字符串

字典

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值