我有一个列表在列表中随机访问,我要添加一个元素。 (请注意,元素必须随机插入列表中,即我不想在结尾插入或开始) 例如:
myList = [[0, 1, 4, 7],[0, 3, 2, 7]]
toinsert = [5, 6]
for item in toinsert:
random.choice(myList).insert(random.randint(1,len(`the list that got chosen`)-2), item)
我尝试过使用
choicelist = random.choice(myList)
choicelist.insert(randint(1,len(choicelist)))
但是我不确定如何把它放回原始列表的位置 - 考虑它是一个随机列表。
我知道我可以随机选择myList
的索引并使用该方法,但我正在寻找一种希望更多的Pythonic - 而且更短的方式。
答案 0 :(得分:2)
您无需执行任何操作即可将对choicelist
的更改反映在原始列表myList
中。
choicelist = random.choice(myList)
在上面的陈述中,choicelist
引用了myList
中的一些随机列表,即choicelist
不是random.choice
创建的新列表。因此,您在choicelist
中所做的任何更改都会反映在myList
中的相应列表中。
答案 1 :(得分:0)
你可以分解函数中的每个操作:
import random
def insert_at_random_place(elt, seq):
insert_index = random.randrange(len(seq))
seq.insert(insert_index, elt) # the sequence is mutated, there is no need to return it
def insert_elements(elements, seq_of_seq):
chosen_seq = random.choice(seq_of_seq)
for elt in elements:
insert_at_random_place(elt, chosen_seq)
# the sequence is mutated, there is no need to return it
myList = [[0, 1, 4, 7],[0, 3, 2, 7]]
toinsert = [5, 6]
insert_elements(toinsert, myList)