Python-学习之路-Day2

Data Type

number:

  intger:

  32位机器上为 -2**31 - 2**31

  64位机器上为-2**63 - 2**63

  在python 2 中年当字符串超了后,会自动变成long intger

  在python 3 中没有相关的机制,无论intger多大均为int类型

  float:

  表示方法:

      方法一:普通表示法-0.002341

      方法二:科学计数法-52.3E-4

  Boolean

   True or False  0 or 1

  

if True:
    print("Boolean value is True")
a = 0
if a:
    print("Boolean value is True")

String

   字符串是可以拼接的

name = "boy's name is Bruce"

#显示字符串中有多少个某字母
print(name.count("a"))
#将字符串的首字符大写()
print('alex li'.capitalize())
print('alex li'.title())# 把word首字符变为大写

#字符串居中,左对齐,右对齐,并不足50这个长度,用-
print(name.center(50, "-"))
print(name.ljust(50, '-'))
print(name.rjust(50, '-'))
print('lex li'.zfill(50)) #不够的用零填充

#string encode bytes
print(name.encode())
#判断string是不是以某结尾
print(name.endswith("ce"))

name = "boy's \t name is Bruce"
#定义字符串中tab键的长度
print(name.expandtabs(tabsize=30))
#从下标1开始自左向右查找字符串,找到返回起始下标,未找到返回-1
print(name.find("name", 1)) # 用于切片,字符串也可以切片
print('alex li'.rfind('l')) # 找到最右边一个l,然后按照从左往右写编号

#经常用的format,用于将字符串中{}更换为相应的变量值
format_name = "Bruce"
format_age = 18
name = "name is {name},Age is {age}"
print(name.format(name=format_name, age=format_age))
#format_map仅可以用dict格式
print(name.format_map({'name': 'bruce', 'age': 12}))
#自左向右查某个字符的编号,区别于find()的是,如果没有某字符会报错
print(name.index('a'))

#is相关方法
print('abc23'.isalnum()) #包含英文字符及1-9 - 为true 如果包含特殊字符则为false
print('abc'.isalpha()) #纯英文字符
print('1.00'.isdecimal()) #十进制,比如16进制
print('12'.isdigit()) # 是否为整数
print('1A'.isidentifier()) # 判断是不是一个合法的标识符(是不是一个合法的变量名)
print('1a'.islower()) # 是否为小写
print('33.33'.isnumeric()) #是不是只有数字在里面,相似于isdigit
print(' '.isspace()) # 是不是一个空格
print('My Name Is'.istitle()) # 是不是每个首字符大写
print('Pring'.isprintable()) # 是不是可以打印的,主要是linux tty file dirve file
print('AAAA'.isupper()) # 是不是全大写

#将某个仅包含string的序列,通过+组合成一整个string
print('+'.join(["1", "2", "3"]))

#如果字符串中有字母,则全小写or大写输出
print("AAaa1".lower())
print("AAaa1".upper())
print('Alex Li'.swapcase()) # 大写变小写 小写变大写

#去空格及回车系列
print('\n  AE!\n'.lstrip())  # 去左边的回车及空格
print('\n AE! \n'.strip())   # 两边回车及空格都去
print('\n AE! \n'.rstrip())  # 去右边的回车及空格

# 建立字符串的对应关系,用来加密
p = str.maketrans("abcdef",'123456')
print("a1cde".translate(p))

# 替换
print('bruce'.replace('r','L',1))

# 按照分隔符分割字符串为列表,空即为空格
print('alex li1'.split(' '))
print('alex\n+li'.splitlines()) #基本等同去split('/n'),优于split的是可以自动识别win及linux换行的不同

Bytes

  字节类数据类型(二进制),区别于python2,在python3中年是独立的数据类型,主要用来存储音频或者视频之类。

  bytes 与 string 可以互相转换,如在网络传输时,需要将string变为bytes类型并传输

  

bytes.decode = string
string.encode = byte
"aa".encode('utf-8')

List

import copy

list = []
print("赋值为空的列表:{list1}".format(list1=list))

#存储:
list = ["aa", "bb", "cc", "dd"]

#取值:
print("最简单的遍历:{list}".format(list=list))
print("可用于浅copy的遍历:{list}".format(list=list[:]))
print("单个取值-左侧开始第一个:{list}".format(list=list[0]))
print("单个取值-左侧开始第一个:{list}".format(list=list[-1])) # 0 = -0 不多解释
print("切片取值-正向切片-顾头不顾尾:{list}".format(list=list[0:2])) #list[3]无法取出,记住顾头不顾尾
print("切片取值-反向切片-顾头不顾尾:{list}".format(list=list[-3:-1])) #list[-1]无法取出,记住顾头不顾尾
print("切片取值-切片-':'左侧为空代表从头:{list}".format(list=list[:3])) #从头开始
print("切片取值-切片-':'右侧为空代表从头:{list}".format(list=list[1:])) #到尾部结束
print("切片取值-切片-步幅为2:{list}".format(list=list[::2])) # 跳着取值

#修改:
list.append("ee")
print("增加-在列表最后追加元素:{list}".format(list=list))
list.insert(-1, "gg")
print("增加-在列表某元素前增加值:{list}".format(list=list))
list1 = ["ff", "11", "ff"]
list.extend(list1) # 扩展,将列表合并
print("增加-将两个列表合并:{list}".format(list=list))
list_del = list.pop(4) #取值并删除某元素,默认删最后一个元素
print("删除-删除{list_del}后列表为:{list}".format(list_del=list_del, list=list))
del list[4] #通用删除,在python中可以删除很多东西
print("删除-通用删除-列表为:{list}".format(list=list))
list.remove("ff") #从左往右删除第一个匹配的
print("删除-根据元素值删除-列表为:{list}".format(list=list))
list[2] = "CC"
print("修改-改值-列表为:{list}".format(list=list))
list.reverse()
print("修改-反转-列表为:{list}".format(list=list))
list.sort()
print("修改-排序-列表为:{list}".format(list=list)) #根据ASCII排序,从大到小(小写<大写<数字<特殊字符)

#查询:
print("查询-列表整体的元素数量:{list}".format(list=len(list)))
print("查询-列表中aa的数量:{list}".format(list=list.count("aa")))
print("查询-列表中aa的编号:{list}".format(list=list.index("aa")))

list.clear() #清空列表
del list #删除列表


# 浅copy只copy第一层值,如果有二层列表只是copy内存地址
# 第一层中,二层列表存储为内存指针
list = ["LiuXiaoMing", "ChenTie", ["Tianqi", "tianxia"], "ZhongyaZhou"]
# 区别于数字及字符串的赋值方式,如list2=list,并未生成任何独立的数据,仅仅是给予指针
# 即:变量的内存空间中存的是具体的值,而list,dict,tuple中存的是内存指针
# list2 = list[:]     # 浅copy方法一
# list2 = list(list)  # 浅copy方法二
list2 = list.copy() # 浅copy方法三
print("列表-修改-浅copy-list:{list1}".format(list1=list))
print("列表-修改-浅copy-list2:{list1}".format(list1=list2))
list[1] = "陈铁"
list[2][0] = "天气"
print("列表-修改-浅copy-list:{list1}".format(list1=list))
print("列表-修改-浅copy-list2:{list1}".format(list1=list2))

# 遍历的方法,用for遍历
for item in list:
    print("遍历方法一:", list.index(item), item)

for index, item in enumerate(list):
    print("遍历方法二:", index, item)

for item in enumerate(list):
    print("遍历方法三:", item)

# import copy中的copy的copy等价于list.copy
# copy.deepcopy为复制完全独立的两份数据
list = ["LiuXiaoMing", "ChenTie", ["Tianqi", "tianxia"], "ZhongyaZhou"]
list2 = copy.deepcopy(list)
print("列表-修改-深copy-list:{list1}".format(list1=list))
print("列表-修改-深copy-list2:{list1}".format(list1=list2))
list[1] = "陈铁"
list[2][0] = "天气"
print("列表-修改-深copy-list:{list1}".format(list1=list))
print("列表-修改-深copy-list2:{list1}".format(list1=list2))



list.clear()
print("列表-修改-清空:{list1}".format(list1=list))
del list1

# 浅copy的作用,浅层列表存储个体拥有的,深层的地方存储共性的地方

tuple

# tuple类似于列表,又称为只读列表
# tuple只可以读及切片,一但赋值,不可修改
tup = ("aa", 1, "bb")
tup_one_parameter = ("aa",)
print(tup.index("bb"))
print(tup.count("bb"))

dict

# dict 是一种key-vlaue的数据类型,通过key所在的索引来查数据,list中索引为位置,dict中索引为key
# dict 是无序的,这种无序指的是不能人为的排序,基本上是按照创建顺序来排序,但是这个也不是一个稳定的方法
# hash值相同时,是不可控制的
# 字典内容扩容,当字典默认空间不够时,会自动扩容,扩容后键序就会发生变化
info = {
    'stu1101': "TengLan Wu",
    'stu1102': "LongZe Luola",
    'stu1103': "XiaoZe Maliya",
    'stu1101': "Cang JingKong",
}

print(info)

    

猜你喜欢

转载自www.cnblogs.com/FcBlogPythonLinux/p/11897791.html