对 python 的一个面试题答案不明白思路

本贴最后更新于 183 天前,其中的信息可能已经时移世异

不是太懂面试题一的第两种解决方法,不懂思路

'''
#如何打乱列表元素的顺序
#1.手工打乱列表元素的顺序
#2.随机排列API
#面试题一:编写一个函数(不要使用python模块的函数),打乱列表元素的顺序

#编写一个函数,用于随机排列列表中的元素
#第一种,让两个随机的数进行互换,产生打乱的列表
'''
a = [1,2,3,4,5,6,7,8,9,0]
import random
def random_list1(a):
    for i in range(0,100):
        index1 = random.randint(0,len(a) - 1)
        index2 = random.randint(0,len(a) - 1)
        a[index1],a[index2] = a[index2],a[index1]
    return a

b = random_list1(a)
print(b)

# 第二种(这里不懂)
def random_list2(a):
    a_copy = a.copy()
    result = []
    count = len(a)
    for i in range(0, count):
        index = random.randint(0,len(a_copy) - 1)
        result.append(a_copy[index])
        del a_copy[index]
    return result
a =  [1,2,3,4,5,6,7,8,9,0]
b = random_list2(a)
print(b)


'''
#面试题二: 如何对列表元素进行随机排列
'''
a =  [1,2,3,4,5,6,7,8,9,0]
random.shuffle(a)
print(a)
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    437 引用 • 615 回帖 • 542 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    272 引用 • 1353 回帖 • 210 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    1769 引用 • 11561 回帖 • 580 关注

赞助商 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • daixiongsheng

    第一种:

    采用的是随机交换两个数。

    但这会打乱原来的 list (这里的参数是以引用方式传递)

    第二种:

    这种方法会生成一个新的 List 并且保证原 list 的顺序不变

    有两个 List, result 用来保存已经随机取出的数,另一个 a_copy 保存的是剩余的数

    每次从 a_copy 中随机选择一个数添加到 result 中,并从 a_copy 中删除该数