初始化参数不同
问题描述:
多个变量我在Python 3以下代码:初始化参数不同
x = [(''.join(random.choices(string.ascii_lowercase, k=7))) for _ in range(5)]
有没有更好的方式与不同的K值和范围初始化多个(5+)名单()?
例如:
y = [(''.join(random.choices(string.ascii_lowercase, k=3))) for _ in range(5)]
z = [(''.join(random.choices(string.ascii_lowercase, k=7))) for _ in range(2)]
a = [(''.join(random.choices(string.ascii_lowercase, k=4))) for _ in range(3)]
b = [(''.join(random.choices(string.ascii_lowercase, k=3))) for _ in range(5)]
c = [(''.join(random.choices(string.ascii_lowercase, k=1))) for _ in range(3)]
答
把列表中理解的功能和用途反复:
def func(k, r):
return [(''.join(random.choices(string.ascii_lowercase, k=k))) for _ in range(r)]
y = func(3, 5)
...
c = func(1, 3)
如果你有两个列表k
和r
值,你可以这样做:
y,..., c = (func(*t) for t in zip(lst_k, lst_r))
或者更好的保证数据的结构列表的列表不用担心目标在LHS数量:
super_list = [func(*t) for t in zip(lst_k, lst_r)]
+0
非常感谢! – yangd01234
答
肯定的是:参数化的参数:
import random
import string
k_val = [3, 7, 4, 3, 1]
r_val = [5, 2, 3, 5, 3]
x = [[(''.join(random.choice(string.ascii_lowercase, k=k_val[i])))
for _ in range(r_val[i])] for i in range (len(r_val)) ]
产生在循环中列出并附加到在循环之前声明的另一个列表 – PYA