python数据类型

八大数据类型

number(数字)、str(字符串)、Boolean(布尔值)、None(空值)

list(列表)、tuple(元组)、dict(字典)、set(集合)

一、列表

name=["张三","李四","果冻"]
name2=[1,3,2,11,4,8]

# 1.取值和取索引
# print(name[0])  #取值张三,从0开始,如果取值范围超过列表范围会报错

#索引,表示知道数据的内容,查找数据所在的位置
# print(name.index("果冻"))  #如果数据不在列表中,会报错

# 2.修改
# name[1] = "王二"      #超出范围会报错
# print(name)

# 3.增加
# name.append("辜友银") #append 在最后增加元素
# print(name)
# name.insert(1,"奥丁")  #insert 在列表1前面插入数据

# name1=["雷神","宇宙女","绿巨人","奥丁"]
# name.extend(name1)       # exted 添加元素组
# 4.删除
# name.remove("果冻")     # 删除前面第一次出现的数据“果冻”,remove删除指定数据
# #
# name.pop()              # pop,默认情况删除最后一个数据
# name.pop(0)             #指定删除对应列数据
# name.clear()            #清空列表

# 5.del删除,delete简称
# del name[3]              #本质上用来将一个变量从内存中删除
                            #在平时开发中,要用列表删除数据,不要用del删除,
                            #因为del从内存删除后,后续代码将不能在用这个数据


# 6.len,列表中总共包含元素的个数   len函数length 长度 的缩写
# len=len(name)
# print("列表中包含 %d 个元素"%len)

# 7.count 函数方法,统计某元素在列表中出现的次数
# count = name.count("张三")        # count次数
# print("张三在name列表中出现了 %d 次"%count)

# 8.排序 sort()升序,sort(reverse=Ture)降序,reverse()反转,逆序排列
# name2.sort()            # 升序
# print(name2)
# name2.sort(reverse=True)  #降序排列
# name2.reverse()              #逆序
# print(name2)

#9.查找,in,not in
# a="奥丁" in(name)  # 奥丁是在name中    判断字典时,in只判断字典的key,而不判断值
b="奥丁" not in(name) # 奥丁不是在name中
# print(a)
print(b)
#
# print(name2)
# print(name)

1.1 切片

num = "0123456789"
# 列表元组也可以切片,字典不可以切片
# num[开始位置:结束位置:步长],开始位置=0可以省略,结束位置=末尾可以省略,步长=1可以省略,

# 1.切取2-5的字符串
num1=num[2:6:1]
print(num1)

# 2.切取2-末尾的字符串
num2=num[2:]
print(num2)

# 3.截取从开始-5位置的字符串
num3=num[:6]
print(num3)

# 4.截取完整的字符串
num4=num[:]
print(num)

# 5.从开始位置,每隔一个字符截取字符串(使用步长)
num5=num[::2]
print(num5)

# 6.从索引1开始,每隔一个截取一个
num6=num[1::2]
print(num6)

# 7.截取从2至(末尾-1)的字符串
num[-1]     #-1表示倒数第一的一个数
num7=num[2:-1]
print(num7)

# 8.截取字符串末尾的两个数
num8=num[-2:]
print(num8)

# 9.字符串的逆序(面试)从右向左截取
num9=num[::-1]  # 表示从最后一个数开始,每截取一个数向左移动一位
print(num9)

二.字典

xiaoming = {"name":"小明",
            "sge":18,
            "gender":True,
            "hegiht":1.75,
            "weight":75.5}

# 1.取值
# print(xiaoming["name"])  # 数据不存在报错

# 2.增加/修改
# xiaoming["sex"] ="男"   # 如果key不存在,就是增加键值对
# xiaoming["name"] = "小王"  # 如果key存在,就是修改键值对

# 3.删除
# xiaoming.pop("name")
# xiaoming.clear()    # 清空


# name.remove("果冻")     # 删除前面第一次出现的数据“果冻”,remove删除指定数据
# #
# name.pop()              # pop,默认情况删除最后一个数据
# name.pop(0)             #指定删除对应列数据
# name.clear()            #清空列表

# 4.del删除,delete简称
# del name[3]

# 5.统计键值对的数量  len
# print(len(xiaoming))

# 6.合并键值对(合并字典)  update

xiaowang = {"hegihtwang":1.65}
a = {}
a.update(xiaowang)
a.update(xiaoming)
print(a)
# 结果:两个字典合并

# 7.清空 clear
# xiaoming.clear()

# print(xiaoming)

元组和列表相互转换

tuple1 = (1,2,3)
list1 = [4,5,6]

print(tuple(list1))
print(list(tuple1))

循环遍历字典列表items方法

heros = {1: 'yx1', 2: 'yx2', 3: 'yx3', 4: 'yx4'}
for k ,v in heros.items():
    print(k,v)
    
 # 结果:   
        1 yx1
        2 yx2
        3 yx3
        4 yx4

分别按字典的key,value值进行排序

# 按字典的key排序
dic = {'a': 99, 'b': 123, 'd': 50, 'c': 20}
d = sorted(dic.items(), key=lambda x:x[0])
print(d) # [('a', 99), ('b', 123), ('c', 20), ('d', 50)]  

# 按字典的值排序
dic = {'a': 99, 'b': 123, 'd': 50, 'c': 20}
b = sorted(dic.items(), key=lambda x:x[1])
print(b) # [('c', 20), ('d', 50), ('a', 99), ('b', 123)]


# 只要key并排序
dic = {'a': 99, 'b': 123, 'd': 50, 'c': 20}
c = sorted(dic.keys())
print(c) # ['a', 'b', 'c', 'd']

三、元组

1.特性

1.元组中的元素值是不允许修改的,但我们可以对元组进行连接组合
2.元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组
3.与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组

2.元组的内置函数

1、len(tuple):计算元组元素个数。
2、max(tuple):返回元组中元素最大值。
3、min(tuple):返回元组中元素最小值。
4、tuple(seq):将列表转换为元组。

3.元组实例方法

#1.使用“+”可将两个元组连接在一起
	numbers1 = (1,2,3,4,5)
    numbers2 = (6,7,8,9,0)
    print(numbers1 + numbers2)
    # 结果: (1, 2, 3, 4, 5, 6, 7, 8, 9, 0)
    
# 2.使用“*”号可将元组原来的元素复制N次
numbers1 = (1,2,3)
print(numbers1 * 2)
# 结果:(1, 2, 3, 1, 2, 3)

# 3.使用“in tuple"的句式可用于判断某元素是否存在于元组中。
# 若存在返回值为True;若不存在,返回值为False
numbers1 = (1,2,3,4,5)
print(9 in numbers1)  # 结果:False
print(2 in numbers1)  # 结果:True

# 4.使用for循环可遍历元组中的元素
numbers1 = (1,2,3,4,5)
for i in numbers1:
    print(i)
    # 结果:1 2 3 4 5

四、字符串

# 1.大小写转换  lower()小写  upper()大写
S = 'aaa你好AAA'
print(S.lower())  # 全小写
# 结果:aaa你好aaa
print(S.upper())  # 全大写
# 结果:AAA你好AAA

# 2.首字母大写capitalize(),单词首字母大写title()
S = 'ab abc abc'
print(S.title())
# 结果:Ab Abc Abc
print(S.capitalize())
# 结果:Ab abc abc

# 3.大小写互换   swapcase()
S = 'ab abc ABC'
print(S.swapcase())
# 结果:AB ABC abc

# 4.isalpha(),isdecimal(),isdigit(),isnumeric(),isalnum()
#测试字符串S是否是数字、字母、字母或数字。对于非Unicode字符串,前3个方法是等价的
print('34'.isdigit())  # 是数字?
True
print('abc'.isalpha())  # 是字母?
True
print('a34'.isalnum())  # 是字母或数字?
True

# 5.islower,isupper,istitle  判断是否小写、大写、首字母大写
    # 注意,istitle()判断时会对每个单词的首字母边界判断
print('a34'.islower())  # 是小写?
True
print('AB'.isupper())	# 是大写?
True
print('Aa'.isupper())	# 是大写?不是,因为a是小写
False
print('Aa Bc'.istitle())	# 首字母是大写?
True
print('Aa_Bc'.istitle())	# 首字母是大写?
True
print('Aa bc'.istitle())	# 首字母是大写?
False
print('Aa_bc'.istitle())	# 首字母是大写?
False
***print('AF_Bc'.istitle())	# 首字母是大写? 不是,因为F不是小写
False


# 6.isspace 空白,isprintable,isidentifier
	# 分别判断字符串是否是空白(空格、制表符、换行符等)字符、是否是可打印字符(例如制表符、换行符就不是可打印字符,但空格是)、是否满足标识符定义规则。
    S.isspace()
    S.isprintable()
    S.isidentifier()
  
# 7.endswith和startswith
	# endswith()检查字符串S是否已suffix结尾,返回布尔值的True和False。suffix可以是一个元组(tuple)。可以指定起始start和结尾end的搜索边界。
    # 同理startswith()用来判断字符串S是否是以prefix开头
    S.endswith(suffix[, start[, end]])
	S.startswith(prefix[, start[, end]])
  
# 8. find,rfind和index,rindex  返回位置的索引  用in返回的是布尔值
# find()搜索字符串S中是否包含子串sub,如果包含,则返回sub的索引位置,否则返回"-1"可以指定起始start和结束end的搜索位置。
# index()和find()一样,唯一不同点在于当找不到子串时,抛出ValueError错误。
# rfind()则是返回搜索到的最右边子串的位置,如果只搜索到一个或没有搜索到子串,则和find()是等价的。
# 同理rindex()。
>>> print('abcxyzXY'.find('xy'))
3
>>> print('abcxyzXY'.find('Xy'))
-1
>>> print('abcxyzXY'.find('xy',4))
-1
>>> print('xyzabcabc'.find('bc'))
4
>>> print('xyzabcabc'.rfind('bc'))
7

颠倒字符串的前后顺序

a = '123456789'
c = a[::-1]
print(c)  # 987654321

4.1 对齐方式

ljust()使用fillchar填充在字符串S的右边,使得整体长度为width。rjust()则是填充在左边。如果不指定fillchar,则默认使用空格填充。

如果width小于或等于字符串S的长度,则无法填充,直接返回字符串S

poem = ["你是猪",
        "辜友银",
        "你是个笨猪",
        "你是个大笨猪",
        "你是个超级大笨猪"]

for poem_str in poem:
    # print("|%s|" % poem_str.center(20," "))  # 居中
    # print("%s" % poem_str.ljust(20, " "))  # 左对齐
    print("%s" % poem_str.rjust(20," "))  # 右对齐
posted @ 2019-11-20 11:26  Jeff的技术栈  阅读(264)  评论(0编辑  收藏  举报
回顶部