我是编程新手(使用python)并且有一个简单的问题。 我有这个包含不同元素的列表
tegn = ["a", "b", "c"]
和另一个清单
guess = ["a", "c", "c"]
我希望猜测列表更改为[“a”,“a”,“a”]。我的尝试是:
guess[-2:] = tegn[0]
但这使得它成为[“a”,“a”],从而删除了一个元素。如何在不删除元素的情况下执行此操作?
编辑:
猜测列表会在程序中发生很大的变化,因为我正在制作一个强力方法来猜测一个字符串。所以猜猜是[“a”],[“b”],[“c”]它会去[“a”,“a”],[“a”,“b”]等等答案 0 :(得分:4)
您可以使用列表切片重新分配值:
guess = ["a", "c", "c"]
guess[1:] = ["a" for i in range(guess.count("c"))]
输出:
['a', 'a', 'a']
如果由于某种原因您使用稍微不同的代码和获取嵌套列表:
import itertools
new_list = list(itertools.chain.from_iterable(guess))
编辑:
您可以使用itertools.product
创建["a", "b", "c"]
所有可能配对的列表:
from itertools import product
l = "abc"
listing = list(product(l, repeat=2))
答案 1 :(得分:1)
您可以使用itertools迭代tegn的所有可能产品,直到给定长度。
from itertools import product
tegn = ["a", "b", "c"]
length = 3 # all products up to 3 characters long
for i in range(1, length + 1):
for j in product(tegn, repeat=i):
guess = list(j)
print(guess)
# prints ['a'], ['b'], ['c'], ['a', 'a'], ['a', 'b'] etc.
希望这有帮助!
答案 2 :(得分:0)
这是你想要的吗?
for i in xrange(len(guess)):
guess[i] = tegn[0]
在guess中迭代元素并将它们更新为tegn的第一个元素。
编辑:
您可以在for循环中指定条件,表示您希望i
的值从1到整个数组:
start = 1
end = len(guess)
new_value = tegn[0]
for i in xrange(start, end):
guess[i] = new_value