【问题标题】:create a series of strings in python [closed]在python中创建一系列字符串[关闭]
【发布时间】:2012-11-24 15:27:31
【问题描述】:

有谁知道如何在 Python 中创建一系列连续调用的字符串?

像“ABCDEF”,然后先是“A”,然后是“B”,然后是“C”等等?或者你可以从不同的角度调用它们,比如'D'然后'E'然后'F'然后'A'等等

【问题讨论】:

  • 请说明您要做什么。目前的问题还不清楚。
  • 对不起,我是这个论坛的新手......我试图找到最简单的方法来循环一系列字符串(例如字母),每个字符串可能有不同的起点时间。就像如果我有一个字符串'ABCDEF',我可以先用'A',然后用'B'等获得每个单独的字符串,但是在一个固定重复的循环中。每次重复都可以有不同的起点,例如 C、D、E、F,但始终是 6 个字符串的循环,或者与它们最初的一样多。我想我让它变得更加混乱......!

标签: python string list series


【解决方案1】:

对于启用起点、长度和围绕终点“旋转”的东西,您可以使用: (注意切片,.index() 命令和方便的ascii_uppercase 常量)

from itertools import islice, cycle
from string import ascii_uppercase

def func(start='A', length=1, source=ascii_uppercase):
    src = list(source)
    idx = src.index(start)
    cyc = cycle(src[idx:] + src[:idx])
    return ''.join(islice(cyc, length))

>>> func(length=10)
'ABCDEFGHIJ'
>>> func(length=10, start='X')
'XYZABCDEFG'
>>> func()
'A'
>>> func(length=3)
'ABC'

【讨论】:

  • 我认为这可能真的有效!
  • @PavAmetvic 如果没有 - 你有足够的能力可以很容易地构建自己的
【解决方案2】:

我不确定你想要什么:

for c in "ABCDEF":
    print (c)

一次会给你 1 个字符。或者您可以从中构建一个列表:

print(list("ABCDEF"))

字符串是可下标的:

a = "ABCDEF"
print (a[1]) #B

所以您可以通过这种方式获取各个元素...

如果要构造一个从元素 3 开始的循环字符串:

a = "ABCDEF"
cycle = a[3:] + a[:3]

然后可以像上面那样迭代或下标。

【讨论】:

    【解决方案3】:

    你的意思是这样的:

    In [3]: for i in range(len(s)+1):
       ...:     print s[i:]
       ...: 
    ABCDEF
    BCDEF
    CDEF
    DEF
    EF
    F
    

    【讨论】:

      猜你喜欢
      • 2018-11-09
      • 2017-09-13
      • 2020-05-06
      • 2018-01-08
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多