剑指offer-字符串的排列

1、python中元组和列表的区别
a=[] 是一个列表
b=() 是一个元组
区别:列表可以修改而元组不可以修改
相同点:都是一个容器
形如:
tuple1=(1,2,3,4,5,6,7,8,9)
list1=list(tuple1)
print(list1)
输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
2、Python中的itertools.permutations,返回可迭代对象的所有数学全排列方式。
形如:
for item in permutations([‘a’, ‘b’, ‘c’]):
… print item
(‘a’, ‘b’, ‘c’)
(‘a’, ‘c’, ‘b’)
(‘b’, ‘a’, ‘c’)
(‘b’, ‘c’, ‘a’)
(‘c’, ‘a’, ‘b’)
(‘c’, ‘b’, ‘a’)
3、python中join()方法,将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
形如:
seq1 = [‘hello’,‘good’,‘boy’,‘doiido’]
print ’ '.join(seq1)
hello good boy doiido
print ‘:’.join(seq1)
hello:good👦doiido
4、python中map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
map(function, iterable, …)
形如:
def square(x) : # 计算平方数
return x ** 2
map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
[1, 4, 9, 16, 25]
map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
#提供了两个列表,对相同位置的列表数据进行相加
map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]
5、python中set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
形如:
x = set(‘world’)
y = set(‘goole’)
#创建一个无序不重复元素集,重复的元素被删除了
print(x)
print(y)
#交集
print(x & y)
#并集
print(x | y)
#差集
print(x - y)
输出:
{‘r’, ‘o’, ‘l’, ‘w’, ‘d’}
{‘g’, ‘l’, ‘e’, ‘o’}
{‘l’, ‘o’}
{‘e’, ‘r’, ‘o’, ‘l’, ‘w’, ‘g’, ‘d’}
{‘w’, ‘r’, ‘d’}
6、python中sorted() 函数对所有可迭代的对象进行排序操作。
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
形如:
a = [5,7,6,3,4,1,2]
b = sorted(a) # 保留原列表
print(a)
[5, 7, 6, 3, 4, 1, 2]
print(b)
[1, 2, 3, 4, 5, 6, 7]
7、剑指offer:字符串的排列。 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

import itertools
class Solution:
    def Permutation(self, ss):
        # write code here
        if not ss:
            return []
        arr=sorted(set(list(map(''.join, itertools.permutations(ss)))))
        return arr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值