将多个数组值更改为值

时间:2017-08-23 13:45:15

标签: python arrays

我是编程新手(使用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”]等等

3 个答案:

答案 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