列表拼接变量赋值自动化

list splicing variable assignments automation

假设您有一个字符串列表。

lst = ['a','b17','c','dz','e','ff','e3','e66']

您想将这些字符串分成单独的变量

a = lst[:7] b = lst[7:14] c = lst[14:21]

我想知道是否有一种 pythonic 的方式来处理这个而不是花时间输入每个列表拼接。

试试这个方法:

def f(lst,n):
   l=[]
   range_=list(range(0,len(lst),n))
   for x,y in zip(range_,range_[1:]):
      l.append(lst[x:y])
   return l
print(f(lst,7))

输出 lst 为:

lst = ['a','b17','c','dz','e','ff','e3','e66']*5

是:

[['a', 'b17', 'c', 'dz', 'e', 'ff', 'e3'], ['e66', 'a', 'b17', 'c', 'dz', 'e', 'ff'], ['e3', 'e66', 'a', 'b17', 'c', 'dz', 'e'], ['ff', 'e3', 'e66', 'a', 'b17', 'c', 'dz'], ['e', 'ff', 'e3', 'e66', 'a', 'b17', 'c']]

您可以使用生成器表达式生成切片并将它们解压缩到您想要的变量中:

a, b, c = (lst[i:i+7] for i in range(0, 21, 7))

但是如果列表中的项目超过 21 个,这会产生太多项目无法解包的错误,所以最好使用列表推导来保持列表而不是单个变量:

[lst[i:i+7] for i in range(0, len(lst), 7)]