8.将字符串 "k:1 |k1:2|k2:3|k3:4",处理成字典 {k:1,k1:2,...}

str1 = "k:1|k1:2|k2:3|k3:4"
def str2dict(str1):
dict1 = {}
for iterms in str1.split('|'):
key,value = iterms.split(':')
dict1[key] = value
return dict1
#字典推导式
d = {k:int(v) for t in str1.split("|") for k, v in (t.split(":"), )}

9.请按alist中元素的age由大到小排序

alist = [{'name':'a','age':20},{'name':'b','age':30},{'name':'c','age':25}]
def sort_by_age(list1):
return sorted(alist,key=lambda x:x['age'],reverse=True)

10.下面代码的输出结果将是什么?

list = ['a','b','c','d','e']
print(list[10:])

结果为:[]

11.写一个列表生成式,产生一个公差为11的等差数列

print([x*11 for x in range(10)])

结果为:[0, 11, 22, 33, 44, 55, 66, 77, 88, 99]

12.给定两个列表,怎么找出他们相同的元素和不同的元素?

list1 = [1,2,3]
list2 = [3,4,5]
set1 = set(list1)
set2 = set(list2)
print(set1 & set2)
print(set1 ^ set2)

思考:用与来表示相同的元素,不同的元素用或

结果为:

{3}
{1, 2, 4, 5}

13.请写出一段python代码实现删除list里面的重复元素?

l1 = ['b','c','d','c','a','a']
l2 = list(set(l1))
print(l2)

用list类的sort方法:

l1 = ['b','c','d','c','a','a']
l2 = list(set(l1))
l2.sort(key=l1.index)
print(l2)

也可以这样写:

l1 = ['b','c','d','c','a','a']
l2 = sorted(set(l1),key=l1.index)
print(l2)

也可以用遍历:

l1 = ['b','c','d','c','a','a']
l2 = []
for i in l1:
if not i in l2:
l2.append(i)
print(l2)

结果为:['b', 'c', 'd', 'a']

set类型

set 和 dict 类似,也是一组 key 的集合,但是不存储 value. 由于 key  不重复,所以,在 set 中, 没有重复的 key 集合是可变类型

集合的创建

# 第一种方式创建 set 类型
>>> print(type(set1), set1)
<class 'set'> {1, 3, 6, 'z', 'a', 'b'} # 第二种方式创建 set 类型
>>> set2 = set(['z', 'a', 'b', 3, 6, 1])
>>> print(type(set2), set2)
<class 'set'> {1, 3, 6, 'z', 'a', 'b'}
结果为:<class 'set'> {'b', 1, 3, 6, 'a', 'z'} # 第三种方式创建 set 类型
>>> set3 = set('hello')
>>> print(type(set3), set3)
<class 'set'> {'o', 'e', 'l', 'h'}
结果为:<class 'set'> {'l', 'o', 'h', 'e'}

set工厂函数

(1)add(self, *args, **kwargs)

  新增一个元素到集合

set1 = {'a', 'z', 'b', 4, 6, 1}
set1.add(8)
set1.add('hello')
print(set1)

结果为:{'b', 1, 4, 'hello', 6, 8, 'a', 'z'}

(2) clear()
  清空所有集合元素

set1 = {'a', 'z', 'b', 4, 6, 1}
set1.clear()
print(set1)

结果为:set()

(3)copy()
    拷贝整个集合并赋值给变量

set1 = {'a', 'z', 'b', 4, 6, 1}
set2 =set1.copy()
print(set2)

结果为:{'b', 1, 'a', 4, 6, 'z'}

(4)pop()
    随机删除集合中一个元素,可以通过变量来获取删除的元素

set1 = {'a', 'z', 'b', 4, 6, 1}
ys = set1.pop()
print('set1集合:', set1)
print('删除的元素:', ys)

结果为:

set1集合: {1, 4, 6, 'a', 'z'}
删除的元素: b

(5)remove(self, *args, **kwargs)
    删除集合中指定的元素,如果该集合内没有该元素就报错

set1 = {'a', 'z', 'b', 4, 6, 1}
set1.remove('a')
print(set1)
set1.remove('x')
print(set1)

结果为:

{'b', 1, 4, 6, 'z'}
Traceback (most recent call last):

File "<ipython-input-11-daa8bf30f7b8>", line 4, in <module>
set1.remove('x')

KeyError: 'x'

(6)discard(self, *args, **kwargs)
    删除集合中指定的元素,如果该集合内没有该元素也不会报错

set1 = {'a', 'z', 'b', 4, 6, 1}
set1.discard('a')
print(set1)
set1.discard('y')
print(set1)

结果为:

{'b', 1, 4, 6, 'z'}
{'b', 1, 4, 6, 'z'}

pop() 、remove() 、 discard() 三个集合删除函数比较:
    pop() 随机删除集合中一个元素remove() 删除集合中指定的元素,如果集合中没有指定的元素,程序报错!
    discard() 删除集合中指定的元素,如果集合中没有指定的元素,程序正常运行。

(7) intersection  & :交集; union | :并集合; difference - : 差集

set1 = {'a', 'b', 'x', 'y'}
set2 = {'i', 'j', 'b', 'a'} # 交集
print(set1 & set2)
print(set1.intersection(set2))
结果为:

{'b', 'a'}
{'b', 'a'}

# 并集

print(set1 | set2)
print(set1.union(set2))
结果为:

{'b', 'x', 'y', 'i', 'j', 'a'}
{'b', 'x', 'y', 'i', 'j', 'a'}

# 差集

print(set1 - set2)
print(set1.difference(set2))
print(set2 - set1)
print(set2.difference(set1))
结果为:

{'x', 'y'}
{'x', 'y'}
{'j', 'i'}
{'j', 'i'}

(8)difference_update ()
    求差集,并赋值给源集合

set1 = {'a', 'b', 'x', 'y'}
set2 = {'i', 'j', 'b', 'a'}
set1.difference_update(set2)
print(set1)

结果为:{'x', 'y'}

(9)intersection_update()
    求交集,并赋值给源集合

set1 = {'a', 'b', 'x', 'y'}
set2 = {'i', 'j', 'b', 'a'} set1.intersection_update(set2)
print(set1)

结果为:{'b', 'a'}

(10)symmetric_difference()  和 ^ 符号效果一样
    求交叉补集

set1 = {'a', 'b', 'x', 'y'}
set2 = {'i', 'j', 'b', 'a'} print('symmetric_difference:', set1.symmetric_difference(set2))
print('^:', set1 ^ set2)

结果为:

symmetric_difference: {'x', 'y', 'i', 'j'}
^: {'x', 'y', 'i', 'j'}

(11)symmetric_difference_update()
  求交叉补集并赋值给源集合

set1 = {'a', 'b', 'x', 'y'}
set2 = {'i', 'j', 'b', 'a'} set1.symmetric_difference_update(set2)
print(set1)

结果为:{'x', 'y', 'i', 'j'}

(12)update()
    更新集合,参数为可迭代对象

set1 = {'a', 'b', 'x', 'y'}

set1.update(('hello', 'world'))
print(set1)

结果为:{'world', 'b', 'x', 'y', 'hello', 'a'}

add() 和 update() 比较:
    add(): 只能添加一个元素到集合
    update(): 可以添加多个元素到集合,参数为 iterable

使用 frozenset 定义不可变集合

s = frozenset('hello')
print(s)

结果为:frozenset({'l', 'o', 'h', 'e'})

使用 frozenset 定义的集合,没有 add 或者 pop 等方法

参考地址:https://www.cnblogs.com/hukey/p/9242339.html

14.给定两个list A,B ,请用找出A,B中相同与不同的元素

A,B 中相同元素: print(set(A)&set(B))
A,B 中不同元素: print(set(A)^set(B))

python面试的100题(7)的更多相关文章

  1. python面试的100题(2)

    def print_directory_contents(sPath): """ 这个函数接收文件夹的名称作为输入参数 返回该文件夹中文件的路径 以及其包含文件夹中文件的 ...

  2. python面试的100题(21)

    正则表达式 94.请写出一段代码用正则匹配出ip? ip地址的生成规则. IP地址,是由32位数字二进制转为四个十进制的字符串组成. 怎么转化?下面讲解: 二进制:111111111111111111 ...

  3. python面试的100题(20)

    76.递归函数停止的条件? 递归的终止条件一般定义在递归函数内部,在递归调用前要做一个条件判断,根据判断的结果选择是继续调用自身,还是return:返回终止递归.终止的条件:1.判断递归的次数是否达到 ...

  4. python面试的100题(14)

    32.请写出一个函数满足以下条件 该函数的输入是一个仅包含数字的list,输出一个新的list,其中每一个元素要满足以下条件: 1.该元素是偶数 2.该元素在原list中是在偶数的位置(index是偶 ...

  5. python面试的100题(8)

    企业面试题 15.python新式类和经典类的区别? (在Python 2及以前的版本中,由任意内置类型派生出的类(只要一个内置类型位于类树的某个位置),都属于“新式类”,都会获得所有“新式类”的特性 ...

  6. python面试的100题(4)

    4.打乱一个排好序的list对象alist? import random alist = [1,2,3,4,5] random.shuffle(alist) print(alist) 结果为:[2, ...

  7. python面试的100题(19)

    61.如何在function里面设置一个全局变量 Python中有局部变量和全局变量,当局部变量名字和全局变量名字重复时,局部变量会覆盖掉全局变量. 如果要给全局变量在一个函数里赋值,必须使用glob ...

  8. python面试的100题(18)

    函数 52.python常见的列表推导式? 列表推导式书写形式: [表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件] 参考地址:https://www.cnb ...

  9. python面试的100题(17)

    内存管理与垃圾回收机制 48.哪些操作会导致Python内存溢出,怎么处理? 内存溢出:你申请了10个字节的内存,但写入了大于10个字节的数据会导致内存溢出 内存溢出原因:1.内存中加载的数据量过于庞 ...

  10. python面试的100题(16)

    Python高级 元类 42.Python中类方法.类实例方法.静态方法有何区别? 类方法: 是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为cls,表示类对象,类对 ...

随机推荐

  1. 安装 browsercookie 模块详细步骤

    在安装browsercookie时遇到了不少问题,现在终于解决了,把方法分享下,希望能帮大家节约点时间 到此网址上下载压缩包: https://pypi.org/project/browsercook ...

  2. C#效率优化(4)-- 编译器对数组遍历的优化

    在平时开发过程中,数组是我们使用频率最高的类型之一,在使用定长列表时,数组可以说是最佳方案,这也是我们最熟悉的数据结构之一. 在C#中使用数组,可以获取在内存上连续的相同类型的一组变量,在连续访问时可 ...

  3. super().__init__()方法

    class first(object): def __init__(self,age,name): self.age = age self.name = name class second(first ...

  4. Linux 常用命令 服务器间scp 用户 export 创建文件、软连接

    获取外网ip curl icanhazip.com 服务器间的 文件 复制 scp root@ip:/源目录 目标目录 软连接 查看软连接 ls -li 创建软连接 ln -s 源文件 目标文件 -s ...

  5. Tomcat中相关配置详解

    tomcat的相关配置 server.xml <Server port="8005" shutdown="SHUTDOWN"> <!-- 属性 ...

  6. Mac上利用VScode配置c/c++开发环境

    Mac上利用VScode配置c/c++开发环境 哭辽,Typora里面最好不要插入表情,不然保存会闪退 首先你要有一个vscode 在扩展里面下载c/c++ 第一步 ⬆+com+p 打开命令模式:选择 ...

  7. adworld MISC002 | Linux的挂载文件系统的运用

    EXT3是第三代扩展文件系统(英语:Third extended filesystem,缩写为ext3),是一个日志文件系统,常用于Linux操作系统. Plan 1: 直接将附件使用mount命令挂 ...

  8. 堆优化的dijkstra算法

    #include<bits/stdc++.h> using namespace std; #define ll long long #define P pair<int,int> ...

  9. F 采蘑菇的克拉莉丝

    这是一道树链剖分的题目: 很容易想到,我们在树剖后,对于操作1,直接单点修改: 对于答案查询,我们直接的时候,我们假设查询的点是3,那么我们在查询的时候可分为两部分: 第一部分:查找出除3这颗子树以外 ...

  10. 数据预处理 | 使用 OneHotEncoder 及 get_dummuies 将分类型数据转变成哑变量矩阵

    [分类数据的处理] 问题: 在数据建模过程中,很多算法或算法实现包无法直接处理非数值型的变量,如 KMeans 算法基于距离的相似度计算,而字符串则无法直接计算距离 如: 性别中的男和女 [0,1] ...