Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将字符串拆分为连续的子字符串?_Python_String - Fatal编程技术网

Python 将字符串拆分为连续的子字符串?

Python 将字符串拆分为连续的子字符串?,python,string,Python,String,我有一串“香蕉”。我想生成所有可能的顺序子字符串的列表: [B,BA,BAN,BANA,BANAN,香蕉,A,AN,ANA,…] 这是我可以用Python列表理解来完成的,还是我可以用蛮力的方式生成它们?注意:我是Python新手。TIA使用itertools尝试以下操作: str = "BANANA" all = [[''.join(j) for j in itertools.product(str, repeat=i)] for i in range(1, len(str)+1)] 使用

我有一串“香蕉”。我想生成所有可能的顺序子字符串的列表:

[B,BA,BAN,BANA,BANAN,香蕉,A,AN,ANA,…]


这是我可以用Python列表理解来完成的,还是我可以用蛮力的方式生成它们?注意:我是Python新手。TIA

使用itertools尝试以下操作:

str = "BANANA"
all = [[''.join(j) for j in itertools.product(str, repeat=i)] for i in range(1, len(str)+1)]


使用
itertools
尝试以下操作:

str = "BANANA"
all = [[''.join(j) for j in itertools.product(str, repeat=i)] for i in range(1, len(str)+1)]


使用列表理解:

s = "BANANA"
l = len(s)
ar = [s[j:] for i in range(l) for j in range(i,l)]
print(*ar)
def sublists(lst):
    return [lst[m:n+1] for m in range(0,len(lst)+1) for n in range(m,len(lst)+1)]

  sublists("banana")
=> ['b', 'ba', 'ban', 'bana', 'banan', 'banana', 'banana', 'a', 'an', 'ana', 'anan', 'anana', 'anana', 'n', 'na', 'nan', 'nana', 'nana', 'a', 'an', 'ana', 'ana', 'n', 'na', 'na', 'a', 'a', '']
使用嵌套循环:

s = "BANANA"
l = len(s)
ar = []
for i in range(l):
    for j in range(i,l):
        ar.append(s[j:])
print(*ar)
两种输出:

BANANA ANANA NANA ANA NA A ANANA NANA ANA NA A NANA ANA NA A ANA NA A NA A A

注意:
itertools
已经在A.J.的回答中解释过。

使用列表理解:

s = "BANANA"
l = len(s)
ar = [s[j:] for i in range(l) for j in range(i,l)]
print(*ar)
def sublists(lst):
    return [lst[m:n+1] for m in range(0,len(lst)+1) for n in range(m,len(lst)+1)]

  sublists("banana")
=> ['b', 'ba', 'ban', 'bana', 'banan', 'banana', 'banana', 'a', 'an', 'ana', 'anan', 'anana', 'anana', 'n', 'na', 'nan', 'nana', 'nana', 'a', 'an', 'ana', 'ana', 'n', 'na', 'na', 'a', 'a', '']
使用嵌套循环:

s = "BANANA"
l = len(s)
ar = []
for i in range(l):
    for j in range(i,l):
        ar.append(s[j:])
print(*ar)
两种输出:

BANANA ANANA NANA ANA NA A ANANA NANA ANA NA A NANA ANA NA A ANA NA A NA A A

注意:
itertools
已经在A.J.的回答中解释过了。

如果您想要所有的posible子列表,您可以使用两个来理解一个列表:

s = "BANANA"
l = len(s)
ar = [s[j:] for i in range(l) for j in range(i,l)]
print(*ar)
def sublists(lst):
    return [lst[m:n+1] for m in range(0,len(lst)+1) for n in range(m,len(lst)+1)]

  sublists("banana")
=> ['b', 'ba', 'ban', 'bana', 'banan', 'banana', 'banana', 'a', 'an', 'ana', 'anan', 'anana', 'anana', 'n', 'na', 'nan', 'nana', 'nana', 'a', 'an', 'ana', 'ana', 'n', 'na', 'na', 'a', 'a', '']
如果不需要重复的元素:

def sublistsWithoutRepeated(lst):
  return list(set(sublists(lst)))

  sublistsWithoutRepeated("banana")
=> ['a', '', 'b', 'ba', 'nana', 'na', 'nan', 'an', 'anana', 'anan', 'n', 'bana', 'ban', 'banan', 'banana', 'ana']

如果您想要所有可能的子列表,您可以使用两个来理解一个列表:

s = "BANANA"
l = len(s)
ar = [s[j:] for i in range(l) for j in range(i,l)]
print(*ar)
def sublists(lst):
    return [lst[m:n+1] for m in range(0,len(lst)+1) for n in range(m,len(lst)+1)]

  sublists("banana")
=> ['b', 'ba', 'ban', 'bana', 'banan', 'banana', 'banana', 'a', 'an', 'ana', 'anan', 'anana', 'anana', 'n', 'na', 'nan', 'nana', 'nana', 'a', 'an', 'ana', 'ana', 'n', 'na', 'na', 'a', 'a', '']
如果不需要重复的元素:

def sublistsWithoutRepeated(lst):
  return list(set(sublists(lst)))

  sublistsWithoutRepeated("banana")
=> ['a', '', 'b', 'ba', 'nana', 'na', 'nan', 'an', 'anana', 'anan', 'n', 'bana', 'ban', 'banan', 'banana', 'ana']

我的道歉。。。我没有搜索正确的关键字。但是谢谢你的否决票。哦,我没有否决票,我所做的只是列出了重复的,我通常不会否决重复的,我道歉。。。我没有搜索正确的关键字。但是谢谢你的否决票。哦,我没有否决票,我所做的只是列出了重复的,我通常不会否决重复的