如何从升序中找出给定字母表中的单词

时间:2017-08-25 11:31:56

标签: python python-2.7 list

我有一系列的

words=[a,b,c,d]

我想找到可以按升序排列的单词。

结果列表

[a,ab,abc,abcd,b,bc,bcd,c,cd,d]

怎么做。

我有代码但它有C和python混合,有人可以用它的python等价物来帮助我。

在这里:

word_list=input("Enter the word")
n=len(word_list)
newlist=[]
for(i=0;i<n;i++)
    {
    c=''
    for(j=i;j<n;j++)
        {
        c.join(j)
        newlist=append(c)
        }
    }

3 个答案:

答案 0 :(得分:1)

letters = input("Enter the word")
n = len(letters)
words = [letters[start:end+1] for start in range(n) for end in range(start, n)]

答案 1 :(得分:0)

您可以使用itertools

>>> import itertools
>>> w=['a','b','c','d']
>>> result=[]
>>> for L in range(1, len(w)+1):
...   for subset in itertools.combinations(w, L):
...     result.append(''.join(subset))
... 
>>> result
['a', 'b', 'c', 'd', 'ab', 'ac', 'ad', 'bc', 'bd', 'cd', 'abc', 'abd', 'acd', 'bcd', 'abcd']

答案 2 :(得分:0)

您可以使用itertools.combinations

轻松完成

Itertools对于这类事情有一些很棒的功能。 itertools.combinations完全符合您的要求。

语法为:

itertools.combinations(iterable [, length] )

因此您可以直接输入list words iterablefor-loop。由于您需要所有不同的长度,您必须在words = ['a', 'b', 'c', 'd'] 中进行以获取所有长度的组合列表。

所以如果你的话是:

import itertools
itertools.combinations(words, 2)

你做了:

itertools object

您将获得list(),您可以轻松转换为list(itertools.combinations(words, 2)) 的列表:

[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]

将返回:

extend

但是,如果你想要一个包含所有长度的列表(例如只包括&#39; a&#39;和#39; abc&#39;)那么你只需要import itertools words = ['a', 'b', 'c', 'd'] combinations = [] for l in range(1, len(words) + 1): combinations.extend(list(itertools.combinations(words, l ))) 每个列表的结果将每个列表放到另一个所有长度的列表中。如下所示:

[('a'), ('b'), ('c'), ('d'), ('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b, 'd'), ('c', 'd'), ('a', 'b', 'c'), ('a', 'b', 'd'), ('a', 'c', 'd'), ('b', 'c', 'd), ('a', 'b', 'c', 'd')]

这将给你结果:

strings

如果您希望这些内容更具可读性(tuples而不是list comprehension),则可以使用combinations = [''.join(c) for c in combinations] ...

['a', 'b', 'c', 'd', 'ab', 'ac', 'ad', 'bc', 'bd', 'cd', 'abc', 'abd', 'acd', 'bcd', 'abcd']

所以现在组合只是一个字符串数组:

public WebinarCategories Categories { get; set; }