如何使用python';s pop和append以创建一系列变量列表?

如何使用python';s pop和append以创建一系列变量列表?,python,list,append,Python,List,Append,我是python新手,尝试以不同的顺序获得一系列变量的输出。例如,我想有几个列表,包括ABC、DEF、GHI,并得到ADG、ADH、ADI、AEG、AEH的输出。。。等等我确信这并没有我现在做的那么难,但是我对如何使用循环中的pop和append来完成这项工作有点迷茫 我一直在以不同的顺序处理pop和append,试图创建我想要的输出,但我不太理解append是如何工作的。我可以得到一个按我想要的顺序排列字母的输出,但是有(请参阅我的代码了解我的意思)很多我不想打印的额外列表项 first=[“

我是python新手,尝试以不同的顺序获得一系列变量的输出。例如,我想有几个列表,包括ABC、DEF、GHI,并得到ADG、ADH、ADI、AEG、AEH的输出。。。等等我确信这并没有我现在做的那么难,但是我对如何使用循环中的pop和append来完成这项工作有点迷茫

我一直在以不同的顺序处理pop和append,试图创建我想要的输出,但我不太理解append是如何工作的。我可以得到一个按我想要的顺序排列字母的输出,但是有(请参阅我的代码了解我的意思)很多我不想打印的额外列表项

first=[“A”]、[“B”]、[“C”]
秒=[“D”],[“E”],[“F”]]
第三个=[“G”],[“H”],[“I”]]
可能=[]
对于第一个字母1:
可能。附加(字母1)
对于第二个字母2:
可能。附加(字母2)
对于第三个字母3:
可能。附加(字母3)
打印(可能)
其输出为: 除了“一个”或“一个”或“一个”或“一个”或“一个”或“一个”或“一个”或“一个”或“一个”或“一个”或“一个”或“一个”或“一个”或“一个”或“一个”或“一个”或“一个”或“一个”或“一个”或,“一个”或“一个”或,“一个”或“一个”或“一个,”或“一个,”或“一个或“一个,”或“一个,”或“一个,”或“一个或“一个,”或“一个,”或“一个,”或“一个,”或“一个,”或“一个,”或“一个或“一个,”或“一个,”或,”或,”或“一个,”或“一,”或“一个或“一,”或“一个或,”或,”或“一个或“一个,”或,”或“一个,”或“或或“]、['G']、['H']、['I']、['F']、['G']、['H']、['I']]

我想要的是: ADG,ADH,ADI,AEG,AEH,AEI,AFG,AFH,AFI,BDG


如果你能帮我,我将不胜感激。非常感谢您抽出时间阅读此文章

没有理由在此处使用
pop
<由于在
['a',b','c']之后,
'c'
不再可用于填充任何其他列表,因此code>pop
实际上具有破坏性

您应该做的是简单地迭代每个列表。实际上,我现在要制作这些字符串,只是因为它消除了一些复杂性,如果它们不存在,则不清楚实际输出应该是什么,但这很容易向上推理

as、bs、cs='abc'、'def'、'ghi'
可能=[]
对于as中的a:
对于bs中的b:
对于cs中的c:
可能。追加([a,b,c])
断言可能==['a','d','g'],['a','d','h'],['a','d','i'],['a','e','g'],…]
还值得注意的是,这种循环的“链”是一种非常常见的应用程序,它在标准库中作为
itertools.product
实现

导入itertools
#假设as、bs、cs和可能的定义如上所述
对于itertools.产品(as、bs、cs)中的a、b、c:
可能。追加([a,b,c])
事实上,这种“迭代集合并从集合中构建新列表”非常常见,因此列表理解不仅在Python中是一个概念,在许多其他语言中也是一个概念。在Python中,语法如下所示:

导入itertools
#as、bs和cs的定义如上所述
可能=[[a,b,c]对于itertools.product(as,bs,cs)中的a,b,c]

没有理由在此处使用
pop
<由于在
['a',b','c']之后,
'c'
不再可用于填充任何其他列表,因此code>pop
实际上具有破坏性

您应该做的是简单地迭代每个列表。实际上,我现在要制作这些字符串,只是因为它消除了一些复杂性,如果它们不存在,则不清楚实际输出应该是什么,但这很容易向上推理

as、bs、cs='abc'、'def'、'ghi'
可能=[]
对于as中的a:
对于bs中的b:
对于cs中的c:
可能。追加([a,b,c])
断言可能==['a','d','g'],['a','d','h'],['a','d','i'],['a','e','g'],…]
还值得注意的是,这种循环的“链”是一种非常常见的应用程序,它在标准库中作为
itertools.product
实现

导入itertools
#假设as、bs、cs和可能的定义如上所述
对于itertools.产品(as、bs、cs)中的a、b、c:
可能。追加([a,b,c])
事实上,这种“迭代集合并从集合中构建新列表”非常常见,因此列表理解不仅在Python中是一个概念,在许多其他语言中也是一个概念。在Python中,语法如下所示:

导入itertools
#as、bs和cs的定义如上所述
可能=[[a,b,c]对于itertools.product(as,bs,cs)中的a,b,c]

我将列表更改为只有一个索引。您给出的代码中有两个索引,因为它类似于列表中的列表

first=["A","B","C"]
second=["D","E","F"]
third=["G","H","I"]


for letter1 in first:
    word = ""
    word += letter1
    for letter2 in second: 
        word = word[:1] + letter2
        for letter3 in third: 
            word = word[:2] + letter3 
            print(word)

我将列表更改为只有1个索引。您给出的代码中有两个索引,因为它类似于列表中的列表

first=["A","B","C"]
second=["D","E","F"]
third=["G","H","I"]


for letter1 in first:
    word = ""
    word += letter1
    for letter2 in second: 
        word = word[:1] + letter2
        for letter3 in third: 
            word = word[:2] + letter3 
            print(word)

你要去哪里?为什么你的列表是这样嵌套的?看看
list('ABC')
vs
list(map(list,'ABC'))
,这就是你所拥有的。问题是关于[排列]()和/或[组合]()。在尝试用Python做任何事情之前,请先考虑阅读和理解它们。除非你只是想学习如何使用
list.pop()
()。@iliasiliadis这是一个非常有用的注释,但是你应该清理你的标记。删除
[permutations]
(https://en.wikipedia.org/wiki/Permutation)
和类似的组合和ETC如@AdamSmith所示,对于实际问题,这里有一个简单得多的解决方案。但是让我们从逻辑上考虑一下,这样您就理解了如何应用逻辑:“我想要的是:ADG、ADH、ADI、AEG、AEH、AEI、AFG、AFH、AFI、BDG”-因此,您需要在
之前生成例如
'ADG'
字符串。将它附加到列表中。提示:在最里面的循环中,第一次,您有
letter1
可用且等于
'A'
letter2
类似地等于
'D'
letter3
等于
'G'
。如何从这些中生成字符串
'ADG'
?您在哪里弹出?为什么你的列表是这样嵌套的?看