面试之——基础相关

1、 数据类型

字符串, 字典, 元组, 列表, 集合, collections

字符串:

a = 'abbcdd'
ret = a.count("b")        # 2
ret = a.find('y')         # -1
ret = a.upper()
ret = '_'.join(a)         # a_b_b_c_d_d
ret = a.split('b')       # ['a', '', 'cdd']

列表:

li = ['a','b','c',1,2,3]
li[-1]
li[0:5:2]     # 索引:0~5, 步长:2
li.append(4)
li.insert(0)
li.reverse()
li.index('c')
li.extend([1,2])
li.sort(reverse=True)    # 倒序

元组:

  只读,不能修改

字典:

dic["k1"] = "v1"
dic.setdefault("k2", "v2")

dic.pop("k2")
dic.popitem()
dic.clear()

dic1.update(dic2)

dic.get('k1')
for v in dic.values():pass
for k,v in dic.items():pass

集合:

无序,不重复,  元素: 不可变类型

set = {1, 'a'}
set.add('b')
set.update('cd')    # 迭代添加: {'d', 1, 'c', 'a'}

set.remove('a')
set.clear()

set1 & set2  # 交集
set1 ^ set2  # 反交集
set1 | set2  # 并集
set1 - set2  # 差集
set1 < set2  # 子集  return: bool
set2 > set1  # 超集  return: bool
set = frozenset(iteralbe)    # 迭代创建set()

collections:

from collections import Iterator # 迭代器
from collections import Iterable    # 可迭代对象

在内置数据类型(list ,tuple ,dict ,set)的基础上,collections提供了几个额外的数据类型:
namedtuple , deque , OrderedDict , defaultdict , Counter

1. namedtuple:  生成可以使用名字来访问元素内容的tuple
2. deque: 双端队列,可以快速的从另外一侧追加或取出元素
3. OrderedDict: 有序字典
4. defaultdict: 带有默认值的字典
5. Counter: 计数器,主要用来计数

 

 

1. 命名元组: namedtuple:

from collections import namedtuple
res = namedtuple('name',['x','y','z'])          # ‘name’ 就是 元组名    []里面就是元组的 元素
ret = res(2,3,4)            #传参  一一对应
print(ret)              # name(x=2, y=3, z=4)
print(ret.x)            # 2
print(ret.y)            # 3
print(ret.z)            # 4

nametuple主要用于描述一类东西,而这类东西都有相同的特征


2. 双端队列: deque

from collections import deque
dq = deque()
dq.append(1)
dq.append(2)
dq.appendleft('a')
dq.appendleft('b')
print(dq)               #deque(['b', 'a', 1, 2])
print(dq.pop())         # 2 从后面取值
print(dq.popleft())     # b 从前面(左)取值


3. 有序字典: OrderedDict

from collections import OrderedDict
od = OrderedDict(    [  ('a', 1), ('b', 2), ('c', 3)  ]    )
print(od)
#([('a', 1), ('b', 2), ('c', 3)])     OrderedDict的Key是有序的

有序字典取值顺序:
from collections import OrderedDict
od = OrderedDict()
od['a'] = 1
od['b'] = 2
od['c'] = 3
print(od.keys())        #有序字典取值:  先进先出
#odict_keys(['a', 'b', 'c'])   


4. 带默认值的字典

把大于66和小于66的元素分别放到字典的两个key中
values = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]

from collections import defaultdict

my_dic = defaultdict(list)  # 如果key不存在,默认返回一个空列表
for i in values:
    if i > 66:
        my_dic['k1'].append(i)
    elif i < 66:
        my_dic['k2'].append(i)
print(my_dic)

# 如果用普通字典
my_dic = {}
for i in values:
    if i > 66:
        if 'k1' in my_dic:  # 需要先判断key是不是存在
            my_dic['k1'].append(i)
        else:
            my_dic['k1'] = [i]  # 如果不存在,还要先创建列表
    elif i < 66:
        if 'k2' in my_dic:
            my_dic['k2'].append(i)
        else:
            my_dic['k2'] = [i]
print(my_dic)

 

posted @ 2018-05-12 21:03  静静别跑  阅读(101)  评论(0)    收藏  举报