基础数据类型的整理

基础数据类型

一、数字int

数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以:

#bit_length() 当十进制用二进制表示时,最少使用的位数
v = 11
data = v.bit_length()
print(data)

二、字符str

1.索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。

2.切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾腚)。

a = 'ABCDEFGHIJK'
print(a[0:3])
print(a[2:5])
print(a[0:]) #默认到最后
print(a[0:-1]) #-1就是最后一个
print(a[0:5:2]) #加步长
print(a[5:0:-2]) #反向加步长

3.字符串的常用方法

#captalize,swapcase,title
print(name.capitalize()) #首字母大写
print(name.swapcase()) #大小写翻转
msg='egon say hi'
print(msg.title()) #每个单词的首字母大写

# 内同居中,总长度,空白处填充
ret2 = a1.center(20,"*")  
print(ret2)

#数字符串中的元素出现的个数。
# ret3 = a1.count("a",0,4) # 可切片
# print(ret3)

a2 = "hqw	"
#	前面的补全
# 默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个,如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个。
ret4 = a2.expandtabs()
print(ret4)

a4 = "dkfjdkfasf54"
#startswith 判断是否以...开头
#endswith 判断是否以...结尾
# ret4 = a4.endswith('jdk',3,6)  # 顾头不顾腚
# print(ret4)  # 返回的是布尔值
# ret5 = a4.startswith("kfj",1,4)
# print(ret5)

#寻找字符串中的元素是否存在
# ret6 = a4.find("fjdk",1,6)
# print(ret6)  # 返回的找到的元素的索引,如果找不到返回-1

# ret61 = a4.index("fjdk",4,6)
# print(ret61) # 返回的找到的元素的索引,找不到报错。

#split 以什么分割,最终形成一个列表此列表不含有这个分割的元素。
# ret9 = 'title,Tilte,atre,'.split('t')
# print(ret9)
# ret91 = 'title,Tilte,atre,'.rsplit('t',1)
# print(ret91)

#format的三种玩法 格式化输出
res='{} {} {}'.format('egon',18,'male')
res='{1} {0} {1}'.format('egon',18,'male')
res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)

#strip
name='*egon**'
print(name.strip('*')) 
print(name.lstrip('*'))
print(name.rstrip('*'))

#replace
name='alex say :i have one tesla,my name is alex'
print(name.replace('alex','SB',1))

#####is系列
name='jinxin123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
print(name.isdigit()) #字符串只由数字组成
#公共方法
公共方法:
s = 'aasfhfsaflf'
len()  #总个数
print(len(s))
count  #计算某些元素出现的个数,可切片
c1 = s.count('f')
print(c1)

三、bool值

布尔值就两种:True,False。就是反应条件的正确与否。

真   1   True。

假   0   False。 

四、列表list

列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:

li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]

列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。

1.增

li = [1,'a','b',2,3,'a']
li.insert(0,55) #按照索引去增加
print(li)
li.append('aaa') #增加到最后
li.append([1,2,3]) #增加到最后
print(li)

li.extend(['q,a,w']) #迭代的去增
li.extend(['q,a,w','aaa'])
li.extend('a')
li.extend('abc')
li.extend('a,b,c')
print(li)

2.删

l1 = ['wusir', True, 'alex', 'laonanhai', 'ritian', 'taibai']
#pop 按照索引去删除, 有返回值
ret = l1.pop(0)
print(ret)
print(l1)

#remove 按照元素删除
l1.remove('alex')
print(l1)

#clear 清空列表
l1.clear()
print(l1)

# del
#1,在内存级别删除列表
del l1
print(l1)
#2,按照索引删除。
del l1[2]
print(l1)
#3,切片删除+步长。
del l1[:-1]
print(l1)

3. 改

#1,按照索引去改。
l1[0] = '肖锋'
print(l1)
l1[-1] = '男神'
print(l1)
#2,按照切片去改,先将切片的区域内的内容全部删除,在迭代着添加内容。
l1[:3] = '范德萨发给ghfkhgh;'
l1[:3] = [1111, 2222, 3333, 4444]
print(l1)

4.查

# 按照索引切片去查
#for循环
# for i in l1:
#     print(i)

5.公共方法

len 个数
cou = len(l1)
print(cou)

count 元素个数
print(l1.count('taibai'))

index 通过元素找索引
print(l1.index('alex', 3))

l2 = [1, 3, 5, 9, 7, 6, 2, 4]
sort 从小到大,正序排序
l2.sort()
print(l2)
sort 从大到小,倒序排序
l2.sort(reverse=True)
print(l2)

翻转 reverse
l2.reverse()
print(l2)

列表的嵌套

l1 = ['wusir', 'alex', [99, ' taibai', '98'], 21]
# 1, 将wusir变成全部的大写。
# l1[0] = 'WUSIR'
# print(l1)
# print(l1[0].upper())
# l1[0] = l1[0].upper()
# print(l1)

# 2,将‘taibai'变成首字母大写,其他字母小写,放回原处。
# print(l1[2])
# l2 = l1[2]
# l2[1] = l2[1].strip().capitalize()
# l1[2][1] = l1[2][1].strip().capitalize()
# print(l1)
# l1[2].append('舒淇')
# print(l1)
# 3,用数字的相加将99 变成 字符串的 '100'.
# l1[2][0] = str(l1[2][0] + 1)
# print(l1)
# 4,字符串的'98' 变成数字的100.
# l1[2][2] = int(l1[2][2]) + 2
# print(l1)
在循环一个列表时,最好不要改变列表的大小,会影响你的最终结果。
l1 = [111, 222, 333, 444, 555, ]
del l1[1::2]
print(l1)

# 倒着删除。
for index in range(len(l1)-1, -1, -1):
    if index % 2 == 1:
         del l1[index]
print(l1)

五、字典dict

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

  字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

1.增

dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
dic['sex'] = 'LaddyBoy'
dic['name'] = 'Alex'  有则覆盖,没有就添加
dic.setdefault('sex')
dic.setdefault('sex', 'Laddyboy') 有则不变,无则添加。
dic.setdefault('name', 'alex')
print(dic)

2.删

print(dic.pop('age'))  # 有返回值,返回的是键对应的值
print(dic.pop('age1', '没有此键...'))
print(dic)

dic.clear() 清空字典
print(dic)

print(dic.popitem())  # 随机删除,有返回值,返回值为元组,里面是删除的键值对。
print(dic)

del
1,删除整个字典
del dic
2,按照键删除键值对
del dic['name']
print(dic)

3.改

1, dic['name'] = 'Alex'  有则覆盖,没有就添加
update 两个字典的更新
dic = {"name": "jin", "age": 18, "sex": "male"}
dic2 = {"name": "alex", "weight": 75}
dic2.update(dic)  # 将dic里面的所有键值对 覆盖添加到dic2中,dic不变
print(dic)  # {'name': 'jin', 'age': 18, 'sex': 'male'}
print(dic2)  # {'name': 'jin', 'weight': 75, 'age': 18, 'sex': 'male'}

4.查

1,dic['name']
print(dic['name1'])

2,dic.get('name')
print(dic.get('name'))
print(dic.get('name1'))
print(dic.get('name1', 'sb没有此键'))

#for循环查询
dic.keys(), dic.values(), dic.items()  #类似于list但不是list的类型。
print(dic.keys(),type(dic.keys()))
for key in dic.keys():
    print(key)
l_key = list(dic.keys())
print(l_key)

for value in dic.values():
    print(value)

l_value = list(dic.values())
print(l_value)
print(dic.items())

字典的嵌套

# dic = {
#     'name_list': ['碗蓉', '俊俊', '爽妹'],
#     'status': None,
#     'personal_msg': {
#         'name': '反面教材',
#         'age': 25,
#         'hobby_list': ['抽烟', '喝酒', '烫头'],
#     }
# }

# 1,给dic添加一个键值对,学校:老男孩
# dic['学校'] = '老男孩'
# print(dic)
# 2,将status对应的值改成True
# dic['status'] = True
# print(dic)
# 3,给name_list对应的列表追加一个元素:平平
# print(dic['name_list'])
# dic['name_list'].append('平平')
# print(dic)
# 4,给personal_msg对应的字典添加一个键值对sex:男
# dic2 = dic['personal_msg']
# dic2['sex'] = '男'
# print(dic)
# dic['personal_msg']['sex'] = '男'
# print(dic)
# 5,将hobby_list 对应的列表中的烫头改成唱歌。
dic['personal_msg']['hobby_list'][-1] = '唱歌'
print(dic)
在循环dict中,最好不要改变dict的大小,会影响结果或者报错
dic = {'k1': 'v1', 'k2': 'v2','k3': 'v3','name': 'alex'}
for i in dic:
    if 'k' in i:
        del dic[i]
print(dic)


l1 = []
for key in dic:
    if 'k' in key:
        l1.append(key)
# print(l1)
for key in l1:
    del dic[key]
print(dic)
dic = dict.fromkeys('abc', 666)
print(dic)
dic = dict.fromkeys([11, 22, 33], 666)
print(dic)
dic = dict.fromkeys([1, 2, 3], [])
dic[1].append(666)
print(dic)

C:PythonPython36python3.exe "D:/老男孩12期笔记/day07/day07课堂笔记/day07/02 数据类型的补充.py"
{'a': 666, 'b': 666, 'c': 666}
{11: 666, 22: 666, 33: 666}
{1: [666], 2: [666], 3: [666]}

Process finished with exit code 0

六、元组tuple

元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")

# tu = (11, 22, 33, 44, 55)
#索引,切片,步长
# print(tu[0])
# print(tu[:3:2])
# for i in tu:
#     print(i)
# index  len  count
tu1 = ('wusir', 'alex', [22, 44, 'taibai'],)
# tu1[-1].append('女神')
# print(tu1)
# l1 = [22,33]
# l1.append(tu1)
# # print(l1)
# l1.clear()
# print(l1)
# del tu1
# print(tu1)
# l2 = [1,('wusir', 'alex', [22, 44, 'taibai'],)]
# l2.clear()
# print(l2)
元组里面如果只有一个元素且没有逗号,则该数据的数据类型与里面的元素相同。
tu1 = ('laonanhai')
tu2 = ('laonanhai',)
print(tu1, type(tu1))
print(tu2, type(tu2))

tu1 = (1)
tu2 = (1,)
print(tu1, type(tu1))
print(tu2, type(tu2))

tu1 = ([1, 2, 3])
tu2 = ([1, 2, 3],)
print(tu1, type(tu1))
print(tu2, type(tu2))

七、集合set

集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:

  去重,把一个列表变成集合,就自动去重了。

  关系测试,测试两组数据之前的交集、差集、并集等关系。

1,集合的创建。

set1 = set({1,2,'barry'})
set2 = {1,2,'barry'}
print(set1,set2)  # {1, 2, 'barry'} {1, 2, 'barry'}

#空集合表示方法为 
set()

2.集合的增

# add
set1 = {'alex','wusir','ritian','egon','barry'}
set1.add('景女神')
print(set1)

#update:迭代着增加
set1.update('A')
print(set1)
set1.update('老师')
print(set1)
set1.update([1,2,3])
print(set1)

3.集合的删

set1 = {'alex','wusir','ritian','egon','barry'}

set1.remove('alex')  # 删除一个元素
print(set1)

set1.pop()  # 随机删除一个元素
print(set1)

set1.clear()  # 清空集合
print(set1)

del set1  # 删除集合
print(set1)

4.集合的查

#for循环
for i in set1:
     print(i)

5.集合的交集并集等操作

1.交集(&  或者 intersection)

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 & set2)  # {4, 5}
print(set1.intersection(set2))  # {4, 5}

2.并集(| 或者 union)

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 | set2)  # {1, 2, 3, 4, 5, 6, 7}

print(set2.union(set1))  # {1, 2, 3, 4, 5, 6, 7}

3.差集(- 或者 difference)

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 - set2)  # {1, 2, 3}
print(set1.difference(set2))  # {1, 2, 3}

4.反交集 (^ 或者 symmetric_difference)

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 ^ set2)  # {1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2))  # {1, 2, 3, 6, 7, 8}

5.子集与超集

set1 = {1,2,3}
set2 = {1,2,3,4,5,6}

print(set1 < set2)
print(set1.issubset(set2))  # 这两个相同,都是说明set1是set2子集。

print(set2 > set1)
print(set2.issuperset(set1))  # 这两个相同,都是说明set2是set1超集。

八、其他(for,enumerate,range)。

1.for循环:用户按照顺序循环可迭代对象的内容。

msg = '老男孩python是全国范围内最好的python培训机构'
for item in msg:
    print(item)

li = ['alex','银角','女神','egon','太白']
for i in li:
    print(i)

dic = {'name':'太白','age':18,'sex':'man'}
for k,v in dic.items():
    print(k,v)

2.enumerate:枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),

enumerate将其组成一个索引序列,利用它可以同时获得索引和值。

li = ['alex','银角','女神','egon','太白']
for i in enumerate(li):
    print(i)
for index,name in enumerate(li,1):
    print(index,name)
for index, name in enumerate(li, 100):  # 起始位置默认是0,可更改
    print(index, name)

3.range:指定范围,生成指定数字。

range 当做自定义的数字范围列表,
满足顾头不顾腚,可以加步长,与for循环结合使用。
for i in range(0, 101):  #[0,1,2,3,....100]
    print(i)
for i in range(11):  # [0,1,2,3,....10]
    print(i)
for i in range(0, 101, 3):
    print(i)
for i in range(10, 0, -1):
    print(i)
l1 = [22, 33, 33, 33, 66, 77, 88, 99]
for i in l1:
    print(l1.index(i))
for i in range(len(l1)):
    print(i)
l1 = ['wusir', 'alex', [99, ' taibai', '98'], 21]
for i in l1:
    if type(i) == list:
        for j in i:
            print(j)
    else:print(i)
原文地址:https://www.cnblogs.com/wj12312/p/9003195.html