zoukankan      html  css  js  c++  java
  • 将一个列表中0移到列表的最后

    第一题,将一个列表中0移到列表的最后。两种方法实现
    方法一:
    思路:
    1 声明两个空列表,循环列表arr判断是否为0,然后分别放0和非0的列表
    2 然后两个列表相加
    arr = [0,1,-1,0,2,3,0]
    zero_list = []
    non_zero_list = []
    for i in arr:
        if i==0:
            zero_list.append(0)
        else:
            non_zero_list.append(i)
    
    print(non_zero_list + zero_list)

    方法二:

    需要2次遍历:
    第一次遍历,如果是0,则进行第二次遍历
    第二次遍历逻辑,就是从当前位置和后面所有的元素交换一次位置
    [1,0,-1,0,2,3,0]
    [1,-1,0,0,2,3,0]
    [1,-1,0,0,2,3,0]
    [1,-1,0,2,0,3,0]
    [1,-1,0,2,3,0,0]
    [1,-1,0,2,3,0,0]
     
    arr = [1,0,2,0,2,0,0]
    for i in range(len(arr)):
        if arr[i]== 0:
            for j in range(i,len(arr)-1):
                if arr[j+1]!=0:
                    arr[i],arr[j+1]=arr[j+1],arr[i]
                    break
    
    print(arr)

    当第一层循环遇到0的时候
    执行第二层循环:
    当前位置的元素和后面所有元素中的第一个非0元素进行值的交换
    然后退出第二层循环
    [1,0,2,0,2,0,1]
    [1,2,0,0,2,0,1]
    [1,2,2,0,0,0,1]
    [1,2,2,1,0,0,0]
    [1,2,2,1,0,0,0]

    第二题,写一个int函数,可以将整数的字符串转化为数字
    def int(s):
        num_map = {str(i):i for i in range(10)}
        if not isinstance(s,str):
            raise TypeError
        for i in s:
            if i not in "0123456789":
                raise ValueError
        result  = 0
        x=len(s)-1
        for i in range(len(s)):
            result +=num_map[s[i]]*10**x
            x-=1
        return result
    
    print(int("123")
  • 相关阅读:
    SpringMVC+Shiro权限管理(转载)
    面试常见问题(转载)
    JavaScript 五种(非构造方式)继承
    JavaScript 五种(构造方式)继承
    Quartz.Net 基于XML配置启动
    jexus防止产生 *.core文件
    Last-Modified、ETag、Expires和Cache-Control
    正则表达式记录
    C# 操作mongodb子文档
    ASP.NET Core "完整发布,自带运行时" 到jexus
  • 原文地址:https://www.cnblogs.com/wenm1128/p/11757101.html
Copyright © 2011-2022 走看看