Python 基本数据类型

使用字符串

 1 def main():
 2 
 3     str1 = "hello, world!"
 4     # 通过len函数计算字符串的长度
 5     print(len(str1))
 6     # 字符串首字母大写
 7     print(str1.capitalize())
 8     # 字符串全部转换大写
 9     print(str1.upper())
10     # 从字符串中查找子串所在位置
11     print(str1.find("or"))
12     print(str1.find("shit"))
13     # index与find类似,但是找不到子串会抛出异常
14     print(str1.index("or"))
15     # print(str1.index("shit"))
16     # 检查字符串是否以指定的字符串开头
17     print(str1.startswith("He"))
18     print(str1.startswith("hell"))
19     # 检查字符串是否以指定的字符串结尾
20     print(str1.endswith("!"))
21     # 将字符串以指定的宽度居中并在两侧填充指定的字符
22     print(str1.center(50,"*"))
23     # 将字符串以指定的宽度靠右放置左侧填充指定的字符
24     print(str1.rjust(50,"*"))
25 
26     str2 = "abc123456"
27     # 从字符串中取出指定位置的字符(下标运算)
28     print(str2[2]) #c
29     # 字符串切片(从指定的开始索引到指定的结束索引)
30     print(str2[2:5]) #c12
31     print(str2[2:]) #c123456
32     print(str2[2::2])#c246
33     print(str2[::2])#ac246
34     print(str2[::-1])#654321cba
35     print(str2[-3:-1])#45
36     # 检查字符串是否由数字组成
37     print(str2.isdigit())
38     # 检查字符串是否由字符组成
39     print(str2.isalpha())
40     # 检查字符串是否以数字和字母构成
41     print(str2.isalnum())
42 
43     str3 = "    jackfrued@126.com"
44     print(str3)
45     # 去除字符串左右两侧空白
46     print(str2.strip())
47 
48 if __name__ == '__main__':
49     main()

 

使用列表

切片:

def
main(): fruits = ["grape","apple","strawberry","waxberry"] for fruit in fruits: print(fruit.title(),end="") print(fruit) # 列表切片 fruit2 = fruits[1:4] print(fruit2) #fruit3 = fruits # 没有复制列表只创建了新的索引 # 可以通过完整切片操作来复制列表 fruit3 = fruits[:] print(fruit3) fruit4 = fruits[-3:-1] print(fruit4) # 可以通过反向切片操作来获得倒转后的列表的拷贝 fruit5 = fruits[::-1] print(fruit5) if __name__ == '__main__': main()
 1 # 对列表的排序操作
2 def main(): 3 4 list1 = ["orange","apple","zoo","internationalization","blueberry"] 5 list2 = sorted(list1) 6 # sorted 函数返回列表排序后的拷贝,不会修改传入的列表 7 list3 = sorted(list1,reverse=True) 8 # 通过key关键字参数指定根据字符串长度进行排序而不是默认的字母表顺序 9 list4 = sorted(list1,key=len) 10 print(list1) 11 print(list2) 12 print(list3) 13 print(list4) 14 # 给对象列表发出排序消息直接在列表对象上进行排序 15 list1.sort(reverse=True) 16 print(list1) 17 18 if __name__ == '__main__': 19 main()

 

# 使用列表生成式创建列表

import sys

def main():
    f = [x for x in range(1,10)]
    print(f)
    f = [x + y for x in "ABCD" for y in "1234567"]
    print(f)
    # 用列表的生成表达式语法创建容器
    # 用这种语法创建列表之后元素已经准备就绪,所以需要耗费较多的内存空间
    f = [x ** 2 for x in range(1,1000)]
    print(sys.getsizeof(f)) # 查看对象占用内存的字节数
    print(f)
    # 请注意下面的代码创建的不是一个列表而是一个生成器对象
    # 通过生成器可以获取到数据,但它不占用额外的空间存储数据
    # 每次需要数据的时候就通过内部的运算得到数据(需要花费额外的时间)
    f = (x ** 2 for x in range(1,1000))
    print(sys.getsizeof(f)) # 相比生成式,生成器不占用存储数据的空间
    print(f)
    for val in f:
        print(val)

if __name__ == '__main__':
    main()

 

使用元祖

# python的元组与列表类似,不同之处在于元组的元素不能修改

def main():
    # 定义元组
    t = ("陈掌柜","38",True,"四川成都")
    print(t)
    # 获取元组中的元素
    print(t[0])
    print(t[3])
    # 遍历元祖中的值
    for member in t:
        print(member)
    # 重新给元祖赋值
    # t[0] = "王大锤"  TypeError: 'tuple' object does not support item assignment
    # 变量t重新引用了新的元祖,原来的元祖将被垃圾回收
    t = ("王大锤","20",True,"云南昆明")
    print(t)
    # 将元祖转换成列表
    person = list(t)
    print(person)
    # 列表时候可以修改它的元素的
    person[0] = "王麻子"
    person[1] = 25
    print(person)
    # 将列表转换成元组
    fruits_list = ["apple","banana","orange"]
    fruits_tuple = tuple(fruits_list)
    print(fruits_tuple)

if __name__ == '__main__':
    main()

 

使用集合

# 集合不允许有重复元素,可以进行交集、并集、差集等运算

def main():

    set1 = {1,2,3,3,3,2}
    print(set1)
    print("length =",len(set1))
    set2 = set(range(1,10))
    print(set2)
    set1.add(4)
    set1.add(5)
    set2.update([11,12])
    print(set1)
    print(set2)
    set2.discard(5)
    print(set2)
    # remove 的元素如果不存在会引发KeyError
    if 4 in set2:
        set2.remove(4)
    print(set2)
    # 遍历集合容器
    for elem in set2:
        print(elem ** 2 ,end=" ")
    print()
    # 将元组转换成集合
    set3 = set((1,2,3,3,2,1))
    print(set3.pop())
    print(set3)
    # 集合的交集、并集、差集、对称差运算
    print(set1 & set2)
    print(set1 | set2)
    print(set1 - set2)
    print(set1 ^ set2)
    # 判断子集和超集
    print(set2 <= set1)
    print(set3 <= set1)
    print(set1 >= set2)
    print(set1 >= set3)

if __name__ == '__main__':
    main()

 

使用字典

# 可以存储任意类型的对象,与列表、集合不同的是:字典的没个元素都是由一个键和一个值组成的"键值对",键和值通过冒号分开

def main():

    scores = {"陈掌柜":70,"jay":80,"kobe":95}
    #通过键可以获取字典中对应的值
    print(scores["kobe"])
    print(scores["jay"])
    # 对字典进行遍历(遍历的其实是键,再通过键取对应的值)
    for elem in scores:
        print("%s\t--->\t%d" %(elem,scores[elem]))
    # 更新字典中的元素
    scores["kobe"] = 65
    scores["rose"] = 100
    print(scores)
    # 使用update方法: 将dict2添加到指定字典dict字典里
    dict = {"name":"alex","age":90}
    dic2 = {"sex":"man"}
    dict.update(dic2)
    print("value : %s" % dict)
    if "kobe" in scores:
        print(scores["kobe"])
    print(scores.get("kobe"))
    # get方法也是通过键获取对应的值,但是可以设置默认值
    print(scores.get("kobe",60))
    # 删除字典中的元素
    print(scores.popitem()) # 默认从末尾开始弹出
    print(scores.popitem())
    print(scores.pop("陈掌柜"))
    print(scores)
    # 清空字典
    scores.clear()
    print(scores)
    
if __name__ == '__main__':
    main()

 

小结:

按存储空间的占用分(从低到高):
数字
字符串
集合:无序,即无序存索引相关信息
元组:有序,需要存索引相关信息,不可变
列表:有序,需要存索引相关信息,可变,需要处理数据的增删改
字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删改

按可变不可变区分:
1、可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典
2、不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)

进制:
1个二进制位是计算机里的最小表示单元
1个字节是计算机里最小的存储单位
二进制位=bit = 8bits
8bits = 1Byte = 1字节
1024Bytes = 1KB = 1KB
1024KB = 1MB = 100万字节 = 100万字符 = 1兆
1024MB = 1GB = 一部高清电影短片, 1080p 20分钟,
1024GB= 1TB
1024TB = 1PB

 

posted @ 2019-09-17 19:04  mingtao.li  阅读(175)  评论(0编辑  收藏  举报