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")
  • 相关阅读:
    HDU_1042——阶乘,万进制
    HDU_2136——最大质因数,素数筛选法
    POJ_1321——棋盘问题,回溯+剪枝
    POJ_3009——冰球,IDS迭代加深搜索
    STL_vector
    比较长的文章进行分页显示
    winform中comboBox控件加默认选项的问题
    生成日期随机码
    删除dataGridview中选中的一行或多行
    SQl 事务增加数据
  • 原文地址:https://www.cnblogs.com/wenm1128/p/11757101.html
Copyright © 2011-2022 走看看