python面试之数据类型(列表)

1.如何对list去重复

实现有很多方式,我这边记下我写的一种

if __name__ == '__main__':
    # 数据源
    lists = [1, 2, 3, 1, 2]
    # 存储不重复的值
    aLists = []
    for list in lists:
        # 为空直接添加
        if len(aLists) == 0:
            aLists.append(list)
        else:
            flag = False
            for alist in aLists:
                if list == alist:
                    flag = True
                    break
            # 循环完了之后
            if flag == False:
                aLists.append(list)
    print(aLists)

2.把“1,2,3” 变成 [“1”,“2”,“3”]

if __name__ == '__main__':
    strArray = []
    str = '1,2,3'
    # 切割字符串
    strSplits = str.split(',')
    for strSplit in strSplits:
        strArray.append(strSplit)
    print(strArray)

3.两个 list,A 和 B,找出相同元素和不同元素

由于set集合是无序不可重复数据结构,可采用如下方式:

if __name__ == '__main__':
    listA = [1, 2, 3,4,5,6,7,8,9]
    listB = [2, 3,4,10,11,12,1]
    # 相同元素:
    print(set(listA) & set(listB))
    # 不同元素:
    print(set(listA) ^ set(listB))

4.排序列表[3,2,1,4],从小到大

报错:报错提示超过最大递归深度
RecursionError: maximum recursion depth exceeded in comparison
解决方案:
import sys
sys.setrecursionlimit(9000000) #这里设置大一些

#递归排序
class sortcLass():

    def __init__(self,intArrays):
        self.index = 0
        self.intArrays = intArrays
        self.size = len(self.intArrays) - 1

    def sort(self):
        self.index = self.index + 1
        for i in range(0,self.size):
            if self.intArrays[i] > self.intArrays[i+1]:
                val = self.intArrays[i]
                self.intArrays[i] = self.intArrays[i+1]
                self.intArrays[i + 1] = val
        if self.index == self.size:
            return self.intArrays
        else:
            self.sort()
            return self.intArrays

if __name__ == '__main__':
    #排序列表[3,2,1,4],从小到大
    #首先要看比较多少轮
    sys.setrecursionlimit(100000)
    intArrays = [3,2,1,4]
    obj = sortcLass(intArrays)
    print(obj.sort())

5.合并两个列表

if __name__ == '__main__':
    a = [1, 2, 3]
    b = [4, 5, 6]
    c = a + b
    print(c)

6.如何打乱一个列表的元素?

import random
if __name__ == '__main__':
    x = [i for i in range(5)]
    print(x)
    random.shuffle(x)
    print(x)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值