乐之之

知而行乐,乐而行之,天道酬勤,学无止境。
公共操作与推导式

一、公共操作

(一)运算符

运算符 描述 支持的容器类型
+ 合并 字符串,列表,元组
* 复制 字符串,列表,元组
in 是否存在 字符串,列表,元组,字典
not in 是否不存在 字符串,列表,元组,字典

1、+合并

# 1、字符串
str1 = 'aa'
str2 = 'bb'
str3 = str1 + str2
print(str3)

# 2、列表
list1 = [1,2]
list2 = [10,20]
list3 = list1 + list2
print(list3)

# 3、元组
t1 = (1,2)
t2 = (10,20)
t3 = t1 + t2
print(t3)

------------------------------------
aabb
[1, 2, 10, 20]
(1, 2, 10, 20)
# 集合没有+
# 字典没有+

2、*复制

# 列表
list1 = [1,2,3,4,5]
list2 = list1*2
print(list2)

# 元组
t1 = (1,2,3,4,5)
t2 = t1*2
print(t2)

# 字符串
str1 = "ggasdf"
str2 = str1*2
print(str2)

------------------------------------
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
(1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
ggasdfggasdf

# 集合没有*
# 字典没有*

3、in与not in

# 1、字符串
print('a' in 'abcd')
print('a' not in 'abcd')

# 2、列表
list1 = ['a','b','c','d']
print('a' in list1)
print('a' not in list1)

# 3、元组
t1 = ('a','b','c','d')
print('a' in t1)
print('a' not in t1)


# 4、集合
set1 = {1,2,3,4,5,6,7}
print(1 in set1)

# 5、字典
dict1 = {"张三":18,"李四":19}
print(18 in dict1.values())

--------------------------
True
False

True
False

True
False

True

True

(二)公共方法

函数 描述
len() 计算容器中元素个数
del 或 del() 删除
max() 返回容器中元素最大值
min() 返回容器中元素最小值
range(start,end,step) 生成从start到end的数字,步长为step,供for循环使用
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。
sum() 序列求和
zip() 合并序列

1、len()

list1 = [1,2,3,4,5,6,8,9,10]
print(len(list1))

-------------------
9

2、del()

t1 = (1,2,3,4,5)
del t1
print(t1)   # 报错

3、max()

list1 = [1,2,3,4,5,6,8,9,10,60]
list2 = ["a","z","x","d","j"]
print(max(list1))
print(max(list2))
print(min(list1))
print(min(list2))

----------------------------
60
z
1
a

4、enumerate()

list3 = ["张三","李四","王五","赵六"]
for index,data in enumerate(list3):
    print(data)
    print(index)

--------------------------
张三
0
李四
1
王五
2
赵六
3

5、sum()

list1 = [1,2,3,4,5,6,8,9,10,60]
print(sum(list1))

----------------------------
108

6、zip()

list4 = [1,2,3,4,5,6]
list5 = [8,9,10,60]
print(list(zip(list4,list5)))

-------------------------
[(1, 8), (2, 9), (3, 10), (4, 60)]

(三)容器类型转换

1、tuple()

  • 将某个序列转换成元组
list1 = [1,2,3,4,5,6]
s1 = {10,20,30,40,50}
print(tuple(list1))
print(tuple(s1))

--------------------------
(1, 2, 3, 4, 5, 6)
(50, 20, 40, 10, 30)

2、list()

  • 将某个序列转换成列表
t1 = ('a','b','c','d')
s1 = {10,20,30,40,50}
print(list(t1))
print(list(s1))

-----------------------------
['a', 'b', 'c', 'd']
[50, 20, 40, 10, 30]

3、set()

  • 将某个序列转换成集合
list1 = [1,2,3,4,5,6]
t1 = ('a','b','c','d')
print(set(list1))
print(set(t1))

--------------------------
{1, 2, 3, 4, 5, 6}
{'d', 'a', 'b', 'c'}

二、推导式

[表达式 for 变量 in 列表 if 条件]
{键:值 for 变量 in 字典 if 条件}
{表达式 for 变量 in 集合 if 条件}
(表达式 for 变量 in 元组 if 条件)

(一)列表推导式

  • 用一个表达式创建一个有规律的列表或控制一个有规律列表。
  • 创建一个空列表,追加1到10这几个数字
  • for循环实现过程
list1 = []
for i in range(1,11):
    list1.append(i)
print(list1)

---------------------------
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  • 列表推导式实现过程
list1 = [i for i in range(1,11)]
print(list1)

---------------------
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  • 带if的列表推导式
  • 将1到10的偶数添加到列表
  • 方法一:利用步长实现
list1 = [i for i in range(0,11,2)]
print(list1)

--------------------------------
[0, 2, 4, 6, 8, 10]
  • 方法二:if实现
list1 = [i for i in range(10) if i%2==0]
print(list1)

--------------------------------------
[0, 2, 4, 6, 8]
  • 打印1-300的奇数,7的倍数不要
list1 = sum([i for i in range(1,301) if i%2==1 and i%7!=0])
print(list1)

---------------------------------
19413

(二)字典推导式

  • 创建一个字典:字典key是1-5数字,value是这个数字的2次方
dict1 = {k:k**2 for k in range(1,6)}
print(dict1)

---------------------------
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
  • 将两个列表变为一个字典
list1 = ['name','age','gender']
list2 = ['Tom',20,'man']
dict1 = {list1[i]:list2[i] for i in range(len(list1))}
print(dict1)

----------------------------------
{'name': 'Tom', 'age': 20, 'gender': 'man'}
  • 提取字典中目标数据
computs = {'AUC':268,'HP':125,'DELL':201,'lenovo':199,'acer':99}
# 需求:提取上述电脑数量大于等于200的字典数据
count1 = {key:value for key,value in computs.items() if value>=200}
print(count1)

---------------------------------------
{'AUC': 268, 'DELL': 201}

(三)集合推导式

  • 计算数字1,2,3的平方数
set1 = {i**2 for i in range(1,4)}
print(set1)

-----------------------------------
{1, 4, 9}
  • 输出非abc的字母
a = {x for x in "abracadabra" if x not in 'abc'}
print(a)

--------------------------------------
{'d', 'r'}

(四)元组推导式

  • 生成包含1到9数字的元组
a = (x for x in range(1,10))
print(a)
# 返回的是生成器对象
# <generator object <genexpr> at 0x0000026377564190>
# 使用tuple()函数,可以直接将生成器对象转换成元组
print(tuple(a))

-----------------------------------------
<generator object <genexpr> at 0x0000015913C24190>
(1, 2, 3, 4, 5, 6, 7, 8, 9)

 

posted on 2022-09-30 22:11  乐之之  阅读(20)  评论(0编辑  收藏  举报