第一题,将一个列表中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")
posted on 2019-10-29 09:59  腿短毛不多  阅读(497)  评论(0编辑  收藏  举报