列表变量分配自动化

2024-10-01 13:35:15 发布

您现在位置:Python中文网/ 问答频道 /正文

假设您有一个字符串列表。你知道吗

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

你想把这些字符串分离成单独的变量

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

我想知道是否有一个pythonic的方式来处理这个问题,而不是花时间键入每一个列表拼接。你知道吗


Tags: 字符串列表键入方式时间pythonicfflst
2条回答

可以使用生成器表达式生成切片,并将其解压为所需的变量:

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)]

尝试以下方法:

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']]

相关问题 更多 >