一、字符串

字符串的索引
程序员数数从0开始

  字符串[索引]
  切片:
  字符串[start:end] 从start到end拿到数据. end取不到
  字符串[start:end:step] 从start到end拿数据. 每step个拿出来一个.
  step:
  + 左到右
  - 右到左

常用操作

字符串是一个不可变的数据类型
1. upper() 转化成大写. 在忽略大小写的时候.

name = "aleX leNb"
print(name.upper())
-->ALEX LENB

#lower()转化为小写

2. strip() 默认去掉左右两端的空白

name = "aleX leNb"
print(name.upper())

3. replace() 字符串的替换

#将name变量对应的值中的第一个"l"替换成"p",并输出结果
name = "aleX leNb"
print(name.replace("l","p",1))
-->apeX leNb

4. split() 字符串切割, 结果是列表

name = "aleX leNb"
print(name.split("l"))

5. startswith() 判断是否以xxx开头

#判断 name 变量是否以 "al" 开头,并输出结果
name = "aleX leNb"
print(name.startswith("al"))

#endswith()判断是否以xxx结尾

6. find() 查找字符串中xxx字符的位置. 如果找不到返回-1,index()找不到则报错

name = "aleX leNb"
#找不到返回-1
print(name.find("N"))

#找不到则报错
print(name.index("N"))

7. len() 字符串长度

name = "alex"
print(len(alex))
-->4

8.capitalize()将字符串首字母变为大写

name = "alex"
print(name.capitalize())
-->Alex

9.count()统计字符串中的x出现次数

复制代码
#判断name变量对应的值字母"l"出现几次,并输出结果
name = "alex lenb"
print(name.count("l"))
-->2

#如果判断name变量对应的值前四位"l"出现几次,并输出结果
name = "alex lenb"
print(name.count("l",0,3))
-->1
复制代码

 

二、列表

list - > 装数据的
列表使用[]表示
[]
列表也有索引和切片

增删改查(重点)
增加:
1. append() 追加, 添加在列表的末尾
2. insert() 插入, 在xxxx位置插入一个元素
3. extend() 迭代新增.合并列表

str = "alex"
lst1 = [1,2,3] lst2 = [a,b,c] lst2.extend(lst1)
lst2.extend(str)

删除:
1. pop() 删除. 指定索引删除
2. remove() 删除某个指定元素
3. del list[1:4]
4. clear() 清空列表
5. reverse()将列表所有的元素反转 

修改:
使用索引去修改

查询:
直接用索引查找.
使用for循环可以遍历列表

综合:

需要记忆的魔法有:append(追加),extend(扩展),insert(插入)

append  原来值最后追加,数字,字符,列表都可以进行追加
    li = [6,8,7,5,8]
    li.append(2)                # 追加再最后 原来值再后面追加,因此不用赋予新的值
    print(li)
        
clear     清空列表
    li = [6,8,7,5,8]
    li.clear()                  # 清空列表
    print(li)
        
copy   拷贝(浅拷贝)
    li = [6,8,7,5,8]
    v = li.copy()               # 拷贝,浅拷贝
    print(li)

count    计数(计算元素出现的次数)
    li = [6,8,7,5,8]
    v = li.count(8)             # 计算元素出现的次数
    print(v)

extend  扩展原列表,参数可迭代对象(数字不能扩展,数字不可迭代)
    li = [6,8,7,5,8]
    li.extend("b")              # 扩展追加。
    print(li)

index   根据值获取值的指引位置
    li = [6,8,7,5,8]
    v = li.index(8)             # 根据值获取值的索引位置
    print(v)<br><br>1                 重复字符,获取最左边位置,便不再寻找

insert   插入,也可以根据指引位置插入元素
    li = [6,8,7,5,8]
    li.insert(2,"b")       # 前面参数指定索引,逗号分隔,加要插入的元素
    print(li)

pop    可索引删除某个值,无索引则默认删除最后一个值,赋予一个值也可以获得被删除的值
    li = [6,8,7,5,8]
    v = li.pop(2)               # 指定索引删除,无索引则默认删除最后一个值,也可以获取删除的值
    print(li)
    print(v)

remove  删除列表指定值,左边优先
    li = [6,8,7,5,8]
    li.remove(8)                # 删除列表指定值,从左优先
    print(li)

reverse  将当前列表进行反转
    li = [6,8,7,5,8]
    li.reverse()                # 将当前列表进行反转
    print(li)

sort    排序,有秩序的排序。
    li = [6,8,7,5,8]
    li.sort(reverse=True)      # 当反转正确,则从大到小排序
    print(li)
  #reverse = True为降序, reverse = False为升序(默认)

join  把列表中每一项拼接起来
s = "_sb_".join(["alex", "太白", "太黑", "太绿"])
print(s)
-->alex_sb_太白_sb_太黑_sb_太绿

 

三、元组(tuple): 不可变的列表, 只读列表

放一些不进行修改的数据
元组用()表示.
空元组必须用tuple()来创建

len(tuple)  计算元祖个数

max(tuple)  返回元祖中元素最大值

min(tuple)  返回元祖中元素最小值

tuple(seq)  将列表转换为元祖

小知识点: 如果元组只有一个元素. 必须在末尾添加一个逗号

 

四、字典

在存储数据的时候必须使用key:value的形式进行存储,
key不可以重复.
并且要求key必须可哈希-> 不可变(int, str, tuple, bool, float)
value没有要求

字典的增删改查:
新增:
1. 直接用新key添加

dic = {}
dic["消防员"] = "值得敬佩的人"
#key不可以重复,会把数据覆盖掉

2.

 setdefault(key, value) 如果key存在, 不新增. 不存在, 新增. 最后都查询

删除:

1. pop(key) 指定key删除
2. popitem() 删除最后一个.
3. del dic[key]
4. clear()

修改:

dic[老key] = 新value

查询:

get(key) 使用key获取value
dic[key] 查询, 如果key不存在. 会报错

循环:

for k in dict:
直接拿到key
dict[k]

for v in dict.values():
直接拿value

for k in dict.keys():
直接拿到key
dict[k]

for k, v in dict.items():
直接拿到key, value
1   dict.clear()
删除字典内所有元素

2   dict.copy()
返回一个字典的浅复制

3   dict.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
print(dict.fromkeys('2', 4))    结果为 {'2': 4} 注意: 整数不能作为Key

4   dict.get(key, default=None)
返回指定键的值,如果值不在字典中返回default值

5   key in dict
如果键在字典dict里返回true,否则返回false

6   dict.items()
以列表返回可遍历的(键, 值) 元组数组

7   dict.keys()
以列表返回一个字典所有的键

8   dict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

9   dict.update({'k1':'v1'} OR k1=v1)
把字典dict2的键/值对更新到dict里

10  dict.values()
以列表返回字典中的所有值

11  
dict.popitem()
随机删除,并获取删除的键值以元组形式返回

五、集合set

基本数据类型特点(可变:列表,字典   不可变:字符串,数字,元组)

不同的元素组成

无序

集合中的元素必须是不可变类型,加入可变的类型会报错==

student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
 
print(student)   # 输出集合,重复的元素被自动去掉

# 成员测试
if('Rose' in student) :
    print('Rose 在集合中')
else :
    print('Rose 不在集合中')


# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
 
print(a)
 
print(a - b)     # a和b的差集
 
print(a | b)     # a和b的并集
 
print(a & b)     # a和b的交集
 
print(a ^ b)     # a和b中不同时存在的元素

set的方法

A、add  添加,添加可变的数据类型也是会报错的

s = {1,2,5,5,'g','h'}
s.add(3)
print(s)

执行结果

{1, 2, 3, 5, 'h', 'g'}

B、clear  清空集合

C、intersection  交集,相当于&

s = {1,7,9}
s1 = {1,9,5}
print(s&s1)
print(s.intersection(s1))
 
{9, 1}
{9, 1}

D、union  并集,相当于 |

s = {1,7,9}
s1 = {1,9,5}
print(s|s1)
print(s.union(s1))<br><br>{1,5,7,9}<br>{1,5,7,9}

E、difference  差集,相当于-

s = {1,7,9}
s1 = {1,9,5}
print(s-s1)
print(s.difference(s1))
 
{7}
{7}

F、symmetric_difference  交叉补集,相当于^

s = {1,7,9}
s1 = {1,9,5}
print(s^s1)
print(s.symmetric_difference(s1))
 
{5, 7}
{5, 7}

G、difference-update   差集更新

H、isdisjoint       判断是否有交集

I、issubset        判断是否为子集

s1={1,2}
s2={1,2,3}
print(s1.issubset(s2))
print(s2.issubset(s1))
 
True
False

J、issuperset       判断是否为父集

s1={1,2}
s2={1,2,3}
print(s2.issuperset(s1))
 
True

k、update  更新多个值,可迭代都可传

L、pop,remove,discard  均为删除

s = {9, 'sb', 1, 2, 3, 4, 5, 6}
s.pop()                           # pop不能指定删除,只可以随机删除
print(s)
s = {9, 'sb', 1, 2, 3, 4, 5, 6}  # 指定删除元素,当删除的元素不存在时,删除会报错
s.remove(4)
print(s)
s = {9, 'sb', 1, 2, 3, 4, 5, 6}
s.discard(5)
print(s)                          # 指定元素删除;和remove唯一的区别删除不存在不会报错