ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python基本数据类型

2022-08-26 15:33:53  阅读:211  来源: 互联网

标签:基本 arr python app 数据类型 key citrix print import


python基本数据类型

python基本数据类型有:整型,浮点型,布尔型,复数型,字符串,列表,元组,字典,集合。
六大基本数据类型:

  • ①.Number(数字)
  • ②.String(字符串)
  • ③.List(列表)
  • ④.Tuple(元组)
  • ⑤.Set(集合)
  • ⑥.Dictionary(字典)

基本数据类型按分类又可分为可变数据类型和不可变数据类型。
image

基本数据类型分类

不可变数据类型:数据改变,内存地址也改变。
可变数据类型:数据改变,内存地址不变。

#两个变量交换
x,y = 1,2
x,y = y,x
print('{:d},{:d}'.format(x,y))
#数据类型 值类型(不可变)number(int) str tuple ...  引用类型 (可变) list set dict
print (type(2/2),type(2//2))
#进制  转义字符 \n换行 \r回车
print(0b10,10,0o10,0x1f,bin(10),bin(0o7),bin(0x11),int(0o111),hex(0o23),oct(0b1001))
print(type(True),type(False),'let\'s go ')
print('''ssss \n sss''','hello\world','hello \\n world')

#原始字符串及字符串操作
a,b= 'hello', 'world'
a1 = a +  b
print(r'hello \n world')
print('拼接:hello' + 'world','a'*3,a[0:3],b[0],b[-3:-1])
for i in b:
    if i == 'w':
        print(i)
        
#列表操作
from collections import Counter
sample = [1,2,3,3,3,4,5,5]
print(Counter(sample).most_common(2))#出现次数最多的前两个元素及出现次数
max(set(sample), key=sample.count) #出现次数最多的元素

#int str list 列表[],元组(),
c,d,e = [1,2,3,4,5,1.9,True],[[1,2],['a','f'],[True,False]],['f','d','g']
f = (1,2,3,4)
print(c,d,c + e,type(c),f,type(f),(1,),c[2],a1[1:8:2],3 in c,'e' in a,9 not in c)
#len() max() min() ord() 集合set(特点无序,不重复)
g = {1,2,3,4,5}
h = {1,2,1,2,3,4,3,6,5}#剔除重复元素
print(type(g),ord('w'),h,h-g,h&g,h|g,type(set()))

变量赋值反映在内存中

import sys
x = 100 #分配存储空间
k = x
print(id(x))
x = 'abc'#新的存储空间
print(id(x),k)#x重命名不影响先前赋值的k
#变量赋值为存储块重新关联操作,而非更改原存储空间内的值
y = x
print(x is y,id(x))#y关联到与x相同的存储块内
print(sys.getrefcount(x))

x = 1234
y = 1234
print(x is y,id(x),id(y))#x y值相同,引用对象不同(存储空间不同)

#弱引用不增加引用计数,不影响目标生命周期
#循环引用会引起引用计数垃圾回收机制的内存泄漏(彼此引用计数永不归0,造成内存泄漏)

计算

#两点间距离计算
import numpy as np
import math
p1 = np.array([0, 0])
p2 = np.array([1000, 2000])
p3 = p2 - p1
p4 = math.hypot(p3[0], p3[1])
print(p4)

#小数的三种取整方式
from math import trunc, floor, ceil
x = 3.7
y = -3.7
print(trunc(x),trunc(y))#截断小数部分
print(floor(x),floor(y))#向下取整,变小
print(ceil(x),ceil(y))#向上取整,变大

#浮点数存储方式与比较
from decimal import Decimal
0.1 + 0.1 + 0.1 == 0.3 #浮点数以二进制存储十进制数的近似值
Decimal('0.1') + Decimal('0.1') + Decimal('0.1') == Decimal('0.3')
print(Decimal(0.1),Decimal('0.1'))

语句

#for
for i in range(7,0,-1):
    print(i)
#7 6 5 4 3 2 1
lis = [9,8,7,6,5,4,3,2,1]
for item,index in zip(lis,range(len(lis))):
    print(item, index)

字符串操作

#变量与指定字符串拼接
time = '2022.06.27'
timestr = f"now time is {time}"
print(timestr)

列表操作

#列表指定元素获取
from collections import Counter
sample = [1,2,3,3,3,4,5,5]
print(Counter(sample).most_common(2))#出现次数最多的前两个元素及出现次数
max(set(sample), key=sample.count) #出现次数最多的元素

#反转列表
arr[::-1]

#找出最大最小,排序
a = [1,2,23,4,4,5,8,9,7]
a.sort()
print(a,max(a),min(a))

#列表元素去重
#1 np.unique
import numpy as np
a = [0,0,0,0,1,1,1,1,1,1,1,2,2,3,4]
np.unique(a)
#2 利用集合特性去重
lis = [1,2,34,5,6,1,2,5]
lis = list(set(lis))
print(lis)

#删除列表里指定元素
str=[1,2,3,4,5,2,6]
str.remove(2)
print(str)

#filter的使用,元素过滤
lis = [1,0,0,0,1,1,2]
result = filter(lambda x: True if x != 0 else False, lis)
print(list(result))

#倒叙遍历列表
lis = [1,2,4,5]
for i in reversed(lis):
    print(i)
  
#列表中随机数获取
import random
temp = [0,1,2,3,4,5,6,7,8,9,10,11,12,13]
a = temp*4
print(a)
print(random.sample(a,5))#random.sample(列表名,输出随机数个数)

#列表合并
a = [1,2]
b = [3,4,5]
c = a + b
b.extend(a)
print(b)
b.append(a)
print(c,b)

#交 并 差
a=[2,3,4,5]
b=[2,5,8]
print(list(set(a).intersection(set(b))))
print(list(set(a).union(set(b))))
print(list(set(b).difference(set(a))))

#获取字符串数组最大字串
mylist = ['123','123456','1234']
print(max(mylist, key=len))

#获取数组最大值、最小值所在位置
distance = [1,2,3,0,5,6,9]
print(distance.index(min(distance)))
print(distance.index(max(distance)))

#####二维数组
#初始化与赋值
mat = [[0 for _ in range(2)] for _ in range(3)]
mat[0][0] = 1
print(mat)

#找到数组中最接近某个值的数
def find_close_fast(arr, e):
    arr = sorted(arr)
    low,high,idx = 0,len(arr) - 1,-1
    while low <= high:
        mid = int((low + high) / 2)
        if e == arr[mid] or mid == low:
            idx = mid
            break
        elif e > arr[mid]:
            low = mid
        elif e < arr[mid]:
            high = mid
    if idx + 1 < len(arr) and abs(e - arr[idx]) > abs(e - arr[idx + 1]):
        idx += 1
    return arr[idx]

val = find_close_fast([1,2,5,6,89,43,23,76,54], 20)
print(val)

#找到有序数组中间隔最大的两个数并分为两个数组
def cut(arr):
    dis_record = []
    for i in range(len(arr)-1):
        dis_record.append(abs(arr[i]-arr[i+1]))
    val= dis_record.index(max(dis_record))
    return arr[:val+1],arr[val+1:]
arr = [14, 17, 49, 90, 92, 97, 103, 106]
val = cut(arr)
print(val)

字典操作

#字典dict{key:value,}key 不能重复,不可变类型
i = {'1':'potato','2':'tomato','3':'banana',4:'salad'}
print(i['1'])

#字典的插入及排序
dict = {}
dict['1'] = 'halu'
print(dict)

#字典的删除
dic.pop('w')

#字典的第n个index的key获取
mydict = {'a': 2, 'b': 1, 'c': 6, 'd': 11}
print(list(mydict.keys())[0])

 #key value 都是变量 (可以使用循环插入)
dict1 = {}
key = 'chinese'
value = 'china'
dict1[key] = value
print(dict1)

#字典排序
nameset = sorted(nameset.items(),key = lambda x:float(x[1]), reverse = True) #type=list
nameset = dict(nameset)

#判断指定键值是否存在
print(d.has_key('site'))#方法1:通过has_key
print('body' in d.keys())#方法2:通过in

保留关键字

35 ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

import keyword
print(len(keyword.kwlist),keyword.kwlist)
keyword.iskeyword("is")

内置函数

aa

lamda表达式降低了python可读性,慎用

#负载
app_citrix_apps = [{'citrix_name':'geou'},
                   {'citrix_name':'geou1'},
                   {'citrix_name':'geou2'},
                   {'citrix_name':'geou3'},]
app_citrix_apps = map(lambda x:{x['citrix_name']:0},app_citrix_apps)
print app_citrix_apps
citrix_app_runlinks={'HyperView': 1, 'Abq_cae_open_1': 1,'geou1':0,'geou':1,  'HyperMesh_1': 1, 'FLUENT 140': 1, 'Workbench 140': 1, 'FLUENT 140_1': 0}
citrix_app_links = map(lambda x:{x.keys()[0]:citrix_app_runlinks[x.keys()[0]]} if x.keys()[0] in citrix_app_runlinks.keys() else x,app_citrix_apps)
print citrix_app_links[0]
citrix_app_links = sorted(citrix_app_links, key=lambda x: x[x.keys()[0]])
loading_citrix_app = citrix_app_links[0]
print loading_citrix_app.keys()[0]

函数中使用全局变量时,列表和元组可以很好地解决

#! /usr/bin/python
draw_point_C = []  #全局列表控制画点  
k = []
def test():
    if(len(k) < 4 and len(draw_point_C) == 0):
        print('true')
    else:
        draw_point_C.insert(0,1)
        #print(len(draw_point_C))

if __name__ == '__main__':
    while(len(k) < 4):
        test()
        k.append(1)
        
#例:用户创建数据库计数
COUNT = 0
def func():
	global COUNT

init.py文件

init.py文件将包含py文件的文件夹变为一个python模块,每个模块中都有__init__.py文件。

a

批量引入

import sys
import datetime
import io
import math

__all__ = ['01']
print(sys.path)
print(math.floor(1.4))

函数及参数

import sys
sys.setrecursionlimit(1000000) #设置最大递归深度,默认最大深度998

#函数
def add(x,y): #x,y形式参数
    term = x +y
    return term
def defa(m = 'ysl',n = 'mac'):#默认参数
    return m+n
 
result,result1 = add(2,3),defa() #2,3实际参数 add(y = 2,x = 3)
print(result,result1)

#序列解包
d = 1,2,3
a,b,c = d
e,f,*g = 4,5,6,7
h,*i,j = 8,9,10,11
(k,l),(m,n) = (12,13),(14,15)#嵌套解包
print(a,b,c,e,f,g,h,i,j)
print(k,l,m,n)

枚举类型

用于定义常量

from enum import Enum,unique
from enum import IntEnum  #值只能为int类型
HERO = Enum('List',('a','b','c','d','e','g','f',))#常量
class STATUS(Enum):#
    GAS = 1
    GAS_sec = 1 #value 相同,GAS_sec为GAS的别名
    LIQUID = 2
    STRONE = 3
    SAND = 4
@unique #不允许重复值出现
class STATUS1(IntEnum):#枚举类型:值不可变
    GAS = 1
    #GAS_sec = 1
    GAS_sec = 2
print(HERO.a,STATUS.GAS,STATUS.GAS.name,STATUS.GAS.value,STATUS['SAND'],)
for i in STATUS:
    print(i)
for i in STATUS.__members__: #.items()
    print(i)
#枚举之间的比较,不能做大小(<>)比较,可以身份比较和等值比较
result = STATUS.GAS == STATUS.SAND
r = STATUS.GAS is STATUS.GAS
a = 4
print(result,r,STATUS(a),'数字转为枚举类型')

输入输出

m=int(input())#获取一个值
arr=list(map(int,input().split())) #获取一行以空格间隔的列表
array=[]
for i in range(m):#获取m行个值
    array.append(int(input()))

标签:基本,arr,python,app,数据类型,key,citrix,print,import
来源: https://www.cnblogs.com/hanwang/p/16153024.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有