题型分析

1、

简单让A、B的值交换

a,b = 1,2
print(a,b)
a = 1
b = 2
a,b = b,a
print(a,b)
a,b=[1,2],[5,9]
print(a,b)

 2、元组         如果元祖里面只有一个元素且不加,那此元素是什么类型,就是什么类型。

tu1 = (1)
tu2 = (1,)
print(tu1,type(tu1))
print(tu2,type(tu2))
tu1 = ([1])
tu2 = ([1],)
print(tu1,type(tu1))
print(tu2,type(tu2))

 3、

l1 = [1,[1],2,3,4]
l2 = l1[:]
l1[1].append('a')
#l2 的结果是什么?
#l1 和l2同时都是[1, [1, 'a'], 2, 3, 4]    浅copy
print(l1,id(l1))
print(l2,id(l2))
print(l1[1] is l2[1])

生成器相关面试题:

一、

def demo():
    for i in range(4):
        yield i

g=demo()

g1=(i for i in g)
g2=(i for i in g1)

print(list(g1))
print(list(g2))

面试题1

二、

def add(n,i):
    return n+i

def test():
    for i in range(4):
        yield i

g=test()
for n in [1,10]:
    g=(add(n,i) for i in g)

print(list(g))

面试题2

三、

import os

def init(func):
    def wrapper(*args,**kwargs):
        g=func(*args,**kwargs)
        next(g)
        return g
    return wrapper

@init
def list_files(target):
    while 1:
        dir_to_search=yield
        for top_dir,dir,files in os.walk(dir_to_search):
            for file in files:
                target.send(os.path.join(top_dir,file))
@init
def opener(target):
    while 1:
        file=yield
        fn=open(file)
        target.send((file,fn))
@init
def cat(target):
    while 1:
        file,fn=yield
        for line in fn:
            target.send((file,line))

@init
def grep(pattern,target):
    while 1:
        file,line=yield
        if pattern in line:
            target.send(file)
@init
def printer():
    while 1:
        file=yield
        if file:
            print(file)

g=list_files(opener(cat(grep('python',printer()))))

g.send('/test1')

协程应用:grep -rl /dir

tail&grep

 内置函数相关的面试题:

现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]

#答案一
test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
print(test(t1,t2))
#答案二
print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))
#还可以这样写
print([{i:j} for i,j in zip(t1,t2)])

coding
1.下面程序的输出结果是:
d = lambda p:p*2
t = lambda p:p*3
x = 2
x = d(x)
x = t(x)
x = d(x)
print x

2.现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]

3.以下代码的输出是什么?请给出答案并解释。
def multipliers():
    return [lambda x:i*x for i in range(4)]
print([m(2) for m in multipliers()])
请修改multipliers的定义来产生期望的结果。

练习

第三题答案:

 使用递归函数实现斐波那契数列:

def func(n,a=1,b=1):
    if n == 1 :
        return a
    return func(n-1,b,a+b)
print(func(100))

使用递归实现阶乘算法:

def fac(n):
    if n == 1 :
        return 1
    return n * fac(n-1)
print(fac(10))

 纸牌游戏(《流畅的Python》)

import collections
from random import choice
import random
Card = collections.namedtuple('Card',['rank','suit'])
class FrenchDeck:
    ranks = [str(n) for n in range(2,11)] + list('JQKA')
    suits = 'spades diamonds clubs hearts'.split()    #黑桃  方片  梅花  红桃
    def __init__(self):
        self.cards = [Card(rank,suit) for suit in self.suits for rank in self.ranks]
    def __len__(self):
        return len(self.cards)
    def __getitem__(self, position):
        return self.cards[position]
beer_card = Card('7','diamonds')  #方片 7
print(beer_card)
deck = FrenchDeck()
print(deck.__dict__)
print(len(deck))
print(deck[0])
print(deck[-1])
print(choice(deck))          #对应  from random import choice
n = random.choice(deck)
print(n)
print(deck[:3])
print(deck[12::13])
for card in deck:
    print(card)
for card in reversed(deck):
    print(card)
print(Card('Q','hearts') in deck)
print(Card('7','beasts') in deck)
from random import shuffle   #随机洗牌
shuffle(deck)

去重题型

class Person:
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex

    def __hash__(self):
        return hash(self.name+self.sex)

    def __eq__(self, other):
        if self.name == other.name and self.sex == other.sex:return True


p_lst = []
for i in range(84):
    p_lst.append(Person('egon',i,'male'))

print(p_lst)
print(set(p_lst))

一道面试题

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏null的专栏

数据结构和算法——旋转打印链表

1、问题描述 输入参数nnn为正整数,如输入n=5n=5n=5,则按行打印如下的数字: ? 2、问题的理解 这个问题是将数字1…n21…n21\dots n^2...

2993
来自专栏偏前端工程师的驿站

MyBatis魔法堂:ResultMap详解

一、前言                                  MyBatis是基于“数据库结构不可控”的思想建立的,也就是我们希望数据库遵循第三范...

2057
来自专栏Python自动化测试

python接口测试之序列化与反序列化(四)

在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python...

1374
来自专栏跟着阿笨一起玩NET

SQL递归查询(with cte as)

  递归CTE最少包含两个查询(也被称为成员)。第一个查询为定点成员,定点成员只是一个返回有效表的查询,用于递归的基础或定位点。第二个查询被称为递归成员,使该查...

751
来自专栏守候书阁

实例感受-es6的常用语法和优越性

前几天,用es6的语法重写了我的一个代码库,说是重写,其实改动的并不多,工作量不大。在重写完了的时候,就个人总结了一下es6常用的一些常用的语法和比es5优越的...

793
来自专栏有趣的Python

py编程技巧-1.2- 如何为元组中每个元素命名,提高程序可读性

实际应用场景: 学生信息系统中数据为固定格式,使用元组来存储,操作速度快。但访问时,我们使用索引(index)访问,大量索引降低程序可读性。如何解决该问题?...

3878
来自专栏Spark学习技巧

案例说明flink的udf

用户自定义函数是非常重要的一个特征,因为他极大地扩展了查询的表达能力。本文除了介绍这三种udf之外,最后会介绍一个redis作为交互数据源的udf案例。

9972
来自专栏跟着阿笨一起玩NET

C#操作操作类库五(字符串的常用扩展方法)

1081
来自专栏ios 技术积累

iOS weak的实现原理

weak表其实是一个hash表,Key是所指对象的地址,Value是weak指针的地址数组,weak是弱引用,所引用对象的计数器不会+1,并在引用对象被释放的时...

2365
来自专栏noteless

[十一]JavaIO之DataInputStream 和 DataOutputStream

DataInputStream和DataOutputStream 继承了各自的FilterInputStream以及FilterOutputStream

992

扫码关注云+社区