在python入门的时候我们讲了python的基本语法和web项目的搭建,当然前两篇博客讲的还都是入门的东西,今天就讲一下我们在项目中可能用到的最多的集合的处理

三大集合基本方法

list

list的方法无非就是增删改查,然后分片,排序代码如下

L = [1, 2, 3, 4]
L.append(6) #末尾添加元素
L.insert(0, 2) #在索引为2的位置添加0
L.remove(3) #移除元素3
L.pop(2) #移除索引为2的元素
L[-1] = 20 #替换最后一个元素
# print(L[0],L[2],L[3],L[4])   #IndexError: list index out of range
print(L[-1], L[-2], L[-3], L[-4])
print(L)
print(L.__len__())
L.sort()

这里的L.sort他的返回值是None,他是直接操作的L本身,如果说是要保留原集合,新生成一个集合,需要使用sorted函数

L1 = sorted(L)

sorted的参数可以使list,map,set都可以。

set

python的set集合和其他语言是一样的,他是无需的,所以在打印arr的时候顺序回来,所以如果你要循环遍历set的话,顺序就会不一样

arr = set(['1','a','b'])
print(arr)
print(arr.__len__())
print('1' in arr) #测试在set中
print('1' not in arr)  #测试不再set中
print(arr.isdisjoint(set(['0','c','d']))) #测试交集
print(arr.issubset(set(['1','a','b']))) #arr必须是其他的子集才rue
print(arr.issuperset(set(['1','a','b']))) #issubset相反
print(arr.difference(set(['a','b'])))
print(arr.union(set([10]),set([11])))
#add(elem)
#remove(elem)
print(arr.discard('1'))
print(arr)

print(arr.pop())  #删除任意元素
print(arr.clear())

在set中添加元素add会在末尾添加元素,update方法会在第一位添加元素,discard方法和remove方法会移除一个元素,只不过remove方法如果元素不存在,则抛出KeyError的错误,discard方法如果元素不存在则不进行操作。他也可以进行测试交集,并集这些操作。

map

dict = {'name':'zhangsan','age':24,'country':'china'}
print(dict)
dict['teacher'] = 'lisi'
print(dict)
print(dict.__len__()) #长度
print('name' in dict) #检查key是否在map中

print(list(dict.__iter__())) #转换成iter用于遍历
#clear
#copy
print(dict.get('name'))
print(dict.items())  #获取各个元素
#print(dict.pop('name')) #获取某个元素
print(dict.popitem()) #随机弹出某个元素
print(dict.update({'name':'wangwu'})) #更新某个元素
print(dict)

map和其他语言的map并没有太大的差别,尤其是和scala的map,常用的方法也都已经列出来了。

集合操作

from functools import reduce

L = list(range(10))

L2 = list([('age', 13), ('age', 15), ('age', 14)])
L2.sort()
print(L2)

L3 = sorted([('age', 13), ('age', 15), ('age', 14)])
print(L3)

L4 = list(map(lambda x: x * 2, [1, 2, 3, 4]))
print(L4)
L5 = list(filter(lambda x: x[1] % 3 == 0, L2))
print(L5)

print(reduce(lambda x, y: x + y, [1, 2, 3, 4], 10))

集合操作可以分别使用sorted,map,filter,reduce这些方法,map方法,filter方法,reduce都算是高级函数,他的第一个参数是一个函数,而python的匿名函数只能用lambda方法。使用如上。在python3.4以上的版本,reduce不再试全局的,需要引入functools中的reduce函数。

循环

# 循环
L = [75, 92, 59, 68]
sum = 0.0
for name in L:
    sum = name + sum
print(sum / 4)

# while循环
x100 = 100
x = 1
while x < x100:
    sum = sum + x
    x = x + 2
    if sum % 3 == 0:
        continue
    if sum % 4 == 0:
        break
    # 如果要退出 break
print(sum)

常用的循环也就是for循环,while循环,多重循环

小结

常用的集合方法就这些,我们常用的无非就是遍历集合,或者用filter,map这些防范来进行一些高级操作。