我知道这将是一个非常新手的问题,但我有点空白,需要立即解决这个问题。
我想更改S、->、B等值,就像下面代码中提到的那样。为此,我可以创建数组或列表"A = S,B,N“或任何需要的东西。但是需要以这种方式遍历。
S --> B
B --> S
S --> N
N --> B
B --> N
N --> S我尝试使用相同的值S、B、N创建2个列表A和B,并使用以下命令遍历它们
i=0;i<length.A;i++
j=0;j<length.B;j++和
i=0;i<length.A;i++
j=i;j<length.B;j++但在场景1中:S更改为B,然后尝试从S -> N进行更改,这是不可能的。在场景2中:我们达到了6个输出中的4个,但不是所有6个必需的输出。
我本可以做更多的研究,但由于缺乏时间,我不能。
此外,我还以伪方式编写了代码。
发布于 2018-02-23 16:31:03
据我所知,您有一个特定的状态序列:S -> B -> S -> N -> B -> N -> have
这可以用生成器来解决,比如:
import itertools
state = itertools.cycle(['S', 'B', 'S', 'N', 'B', 'N'])对next(state)的后续调用将按顺序生成列表,当列表到达末尾时从开始开始。示例:
>>> next(state)
'S'
>>> next(state)
'B'
>>> next(state)
'S'
>>> next(state)
'N'
>>> next(state)
'B'
>>> next(state)
'N'
>>> next(state)
'S'
>>> next(state)
'B'
>>> next(state)
'S'
>>> next(state)
'N'
>>> next(state)
'B'发布于 2018-02-23 16:04:38
我认为这应该可以回答你的问题,我知道我的改变字母的列表并不完全相同,但我认为从这里开始你应该能够实现它。
它把每个s变成b,b变成n,n变成s。
lettersToChange = ['s','b','n']
randomLetters = ['k','l','m','n','s','s','b','n','b','n','s','b','n','b','s']
for i in range(len(randomLetters)):
if randomLetters[i] in lettersToChange:
pos = lettersToChange.index(randomLetters[i])
randomLetters[i] = lettersToChange[(pos+1)%3]所以在randomLetters列表之前和之后:
['k', 'l', 'm', 'n', 's', 's', 'b', 'n', 'b', 'n', 's', 'b', 'n', 'b', 's']
['k', 'l', 'm', 's', 'b', 'b', 'n', 's', 'n', 's', 'b', 'n', 's', 'n', 'b']发布于 2018-02-23 16:37:50
如果我理解正确的话,你必须有一个索引,因为你必须区分,哪一个S、B或N应该前进到它的下一个状态。大概是这样的:
TRAVERSE_ORDER = "SBSNBN"
EXAMPLE_INPUT = ["S", "B", "N"]
def traverse_single_item(state, state_index=0):
next_state = TRAVERSE_ORDER.find(state, state_index) + 1
if next_state == len(TRAVERSE_ORDER):
next_state = 0
return (TRAVERSE_ORDER[next_state], next_state)
new_state = [traverse_single_item(*elem) for elem in EXAMPLE_INPUT]
print(new_state)
newer_state = [traverse_single_item(*elem) for elem in new_state]
print(newer_state)
newest_state = [traverse_single_item(*elem) for elem in newer_state]
print(newest_state)如果在没有索引的情况下调用函数,则假定它是遍历顺序中的第一个匹配项。请注意星号:*elem。它为函数调用解包元组。
https://stackoverflow.com/questions/48943285
复制相似问题