【问题标题】:list splicing variable assignments automation列表拼接变量赋值自动化
【发布时间】:2018-12-21 00:24:42
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 在这里使用变量是一个非常糟糕的设计选择,请改用字典列表
  • 当您完成字母表但列表中仍有项目时,您会怎么做?

标签: python python-3.x list variable-assignment


【解决方案1】:

您可以使用生成器表达式来生成切片并将它们解压缩为所需的变量:

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

【讨论】:

  • 比我的好,+1
【解决方案2】:

试试这个方法:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    相关资源
    最近更新 更多