我希望复制一个列表超过1000次,然后附加到一个更大的列表。
例如:
a = ['1','2','3','4]
复制此列表然后将其嵌套一百次:
output = [['1','2','3','4],['1','2','3','4],['1','2','3','4],['1','2','3','4],['1','2','3','4].....]
到目前为止,我只遇到了* 2,这不是我想要的。
答案 0 :(得分:5)
您可以通过以下方式轻松复制列表。
a = ['1','2','3','4']
output = [a]*1000
以上将创建参考。 如果您需要单独的副本,请执行以下操作。
a = ['1','2','3','4']
output = [a[:] for i in range(1000)]
答案 1 :(得分:3)
在这种情况下,您应该使用[a]*2
。但请注意,*
运算符将创建对主对象的多重引用,因为它是一个可变对象。相反,作为一种更加pythonic的方式,您可以使用itertools.repeat()
,它将为您提供主要对象的单独副本:
In [2]: from itertools import repeat
In [5]: a = ['1','2','3','4']
In [6]: list(repeat(a, 4))
Out[6]:
[['1', '2', '3', '4'],
['1', '2', '3', '4'],
['1', '2', '3', '4'],
['1', '2', '3', '4']]
答案 2 :(得分:1)
你非常接近。虽然a * 2
可能会为您提供[1, 2, 3, 4, 1, 2, 3, 4]
,但有一种方法可以使用相同的运算符来获得所需的结果。它只是重复内容,所以请尝试[a] * 2
。
答案 3 :(得分:0)
试
output = print([a]*no_of_count)
答案 4 :(得分:0)
使用列表理解
>>> b = [a for i in range(3)]
>>> b
[['1', '2', '3', '4'], ['1', '2', '3', '4'], ['1', '2', '3', '4']]
您可以对列表执行各种此类操作。 请检查此链接here
答案 5 :(得分:0)
根据我的理解,您需要复制列表而不使用相同的引用以便将来执行某些操作。
您将尝试使用这段代码生成包含n次复制列表的列表
# imports
import numpy as np
import matplotlib.pyplot as plt
import math
# variables used throughout the program
dlt = math.exp(-5)
eps = math.exp(1) * math.pow(10, -4)
my_p = 123457
the_hashes = map(str.split, open('the_hashes.txt', 'r'))
the_hashes = [[int(float(j)) for j in i] for i in the_hashes]
end = len(the_hashes)
rows = math.ceil(math.log(1/dlt))
cols = math.ceil(math.exp(1)/eps)
C = np.zeros((rows,cols))
# Returns hash(x) for hash function
# given by parameters a, b, p and n_buckets
def hash_fun(a, b, p, n_buckets, x):
y = x % p
hash_val = (a*y + b) % p
output = hash_val % n_buckets
return(output)
# read the file line by line, implementing the algorithm
counter = 0
with open("the_words.txt", "r") as file:
for word in file:
counter = counter + 1
my_x = int(word)
# loop over the 5 different pairs of (a,b) values for the hashes
for i in range(0,end):
my_a = the_hashes[i][0]
my_b = the_hashes[i][1]
my_output = hash_fun(my_a, my_b, my_p, cols, my_x)
C[i,my_output] += 1
if(counter % 10000 == 0):
print counter
或者只是简单地使用这个简写:
import copy
a = [1,2,3,4]
n = 1000
def replicateMaster(n, a):
output= []
while n != 0:
n -= 1
output.append(copy.deepcopy(a))
return output
希望这段代码可以解决您的问题