Python 笔记

1,冒泡算法:

def bubble(items):
    if len(items) <= 1:
        return items
    for index in range(len(items)-1,0,-1):
        flag = False
        for sub_index in range(index):
            if items[sub_index] > items[sub_index + 1]:
                items[sub_index],items[sub_index + 1] = items[sub_index + 1], items[sub_index]
                flag = True
        if flag == False:
            break 
    return items

 2,有一个整数数组,请求出两两之差绝对值最小的值,只要得出最小值即可,不需要求出是哪两个数。

c=min(abs(i-j) fori in a for j in b)

  这里有一个技巧,[abs(i-j) for i in a for j inb]会生成一个list,使用大量的存储空间,而(abs(i-j) for i in a for j inb)则产生一个生成器。

3,写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者:怎样只用4行代码编写出一个从字符串到长整形的函数?)

a=input("输入一组字符:")
if a.isdigit():
    a=int(a)
    print(a)

4,给出一个函数来输出一个字符串的所有排列。

#方法一:递归
def perms(elements):
    if len(elements) <=1:
        yield elements
    else:
        for perm in perms(elements[1:]):
            for i in range(len(elements)):

                yield perm[:i] + elements[0:1] + perm[i:]

for item in list(perms('nice')):
    print(item)
#方法二:
from itertools import permutations
a="nice"
for element in list(itertools.permutations(a, 4)):
    print(''.join(element))

 5,将一个list形式的字符串转换为list数据形式

a = "[1,2,3]"
from ast import literal_eval
a = literal_eval(a)  # list形式字符串转换为list
-------------------------------
eval(a)

  

posted on 2017-12-11 18:00  改改哥  阅读(231)  评论(0编辑  收藏  举报