【问题标题】:How to extract a part of a list of strings?如何提取字符串列表的一部分?
【发布时间】:2023-04-08 00:38:01
【问题描述】:

我有一个字符串列表,我想提取每个字符串的前 6 个字符并将它们存储在一个新列表中。

我可以遍历列表并提取前 6 个字符并将它们附加到新列表中。

y = []
for i in range(len(x)):
    y.append(int(x[i][0:6]))

我想知道是否有一个优雅的单线解决方案。 我尝试了以下方法:

y = x[:][0:6]

但它会返回前 6 个字符串的列表。

【问题讨论】:

  • 查看列表理解

标签: python string list


【解决方案1】:

试试这个:

y = [z[:6] for z in x]

这和这个是一样的:

y = []               # make the list
for z in x:          # loop through the list
    y.append(z[:6])  # add the first 6 letters of the string to y

【讨论】:

    【解决方案2】:

    是的,有。您可以使用以下list-comprehention.
    newArray = [x[:6] for x in y]

    Slicing 具有以下语法:list[start:end:step]

    参数:

    start - 对象切片开始的起始整数
    stop - 切片发生之前的整数。切片在索引停止处停止 - 1.
    step - 整数值,它确定每个切片索引之间的增量


    示例:

    list[start:end] # 从 start 到 end-1 获取项目 list[start:] # 获取从 start 到列表其余部分的项目 list[:end] # 从头到尾获取项目-1(你想要什么) list[:] # 获取原始列表的副本

    如果startend-negative,它将从end 开始计数

    list[-1] # 最后一项 list[-2:] # 最后两项 list[:-2] # 除了最后两项之外的所有内容 list[::-1] # 反转列表

    演示
    假设我有一个 array = ["doctorWho","Daleks","Cyborgs","Tardis","SonicSqrewDriver"]

    我想获得 first 3 项目。

    >>> array[:3] # 0, 1, 2 (.. then it stops)
    ['doctorWho', 'Daleks', 'Cyborgs']
    

    (或者我决定反转它):

    >>> array[::-1]
    ['SonicSqrewDriver', 'Tardis', 'Cyborgs', 'Daleks', 'doctorWho']
    

    (现在我想得到最后一项)

    >>> array[-1]
    'SonicSqrewDriver'
    

    (或最后 3 项)

    >>> array[-3:]
    ['Cyborgs', 'Tardis', 'SonicSqrewDriver']
    

    【讨论】:

      【解决方案3】:

      这可能会有所帮助

      stringList = ['abcdeffadsff', 'afdfsdfdsfsdf', 'fdsfdsfsdf', 'gfhthtgffgf']
      newList = [string[:6] for string in stringList]
      

      【讨论】:

        【解决方案4】:

        试试这个

        ans_list = [ element[:6] for element in list_x ]
        

        【讨论】:

        • 仔细阅读问题:I want to know if there is an elegant one line solution for that. I tried the following:y = x[:][0:6]。 OP 正在尝试将列表理解与切片一起使用。
        【解决方案5】:

        您也可以为此使用地图:

        list(map(lambda w: int(w[:6]), x))
        

        并使用itertools.islice:

        list(map(lambda w:list(int(itertools.islice(w, 6))), x))
        

        【讨论】:

          猜你喜欢
          • 2017-09-18
          • 2020-12-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-01
          • 1970-01-01
          相关资源
          最近更新 更多