使用list comprehension打印出长度为4的单词列表

时间:2015-02-19 15:44:01

标签: python list list-comprehension

我正在尝试编写一个列表解析,使用List1创建长度为4的单词列表。

 List1 = ['jacob','batman','mozarella']


wordList = [words for i in range(1)]
print(wordList)

这会打印wordList但是长度大于4的单词 我正在寻找打印出来的程序:

['jaco','batm','moza']

是List1中的相同单词,但长度为4

我尝试了这个并且没有用

wordList = [[len(4)] words for i in range(1)]

有什么想法吗?

3 个答案:

答案 0 :(得分:11)

你可以使用这个列表comp

>>> List1 = ['jacob','batman','mozarella']
>>> [i[:4] for i in List1]
['jaco', 'batm', 'moza']

价:

  • i[:4]是前4个字符的字符串的一部分

其他方法(所有都有自己的缺点)

  • [re.sub(r'(?<=^.{4}).*', '', i) for i in List1]
  • [re.match(r'.{4}', i).group() for i in List1]
  • [''.join(i[j] for j in range(4)) for i in List1]
  • [i.replace(i[4:],'') for i in List1] -----在moinmoinbongbong
  • 的情况下失败

Credit - Avinash Raj

答案 1 :(得分:4)

  1. len()函数返回您的字符串中的字符串长度。因此,使用len函数列出压缩将给出所有项目长度的列表。
  2. e.g。

    >>> List1 = ['jacob','batman','mozarella']
    >>> [len(i) for i in List1]
    [5, 6, 9]
    >>> 
    
    1. 使用slice() list方法从字符串中获取子字符串。 more info
    2. e.g。

      >>> a = "abcdef"
      >>> a[:4]
      'abcd'
      
      >>> [i[:4] for i in List1]
      ['jaco', 'batm', 'moza']
      

      Python初学者

      1. 定义List1
      2. 定义空List2
      3. 使用for循环来迭代List1
      4. 中的每个项目
      5. 使用列表append()方法,使用slice()方法将项​​目添加到列表中。
      6. 使用print查看结果。
      7. 示例代码:

        >>> List1 = ['jacob','batman','mozarella']
        >>> List2 = []
        >>> for i in List1:
        ...     List2.append(i[:4])
        ... 
        >>> print List2
        ['jaco', 'batm', 'moza']
        >>> 
        

答案 2 :(得分:4)

另一种方法,现在使用地图功能:

List1 = ['jacob','batman','mozarella']
List2 = map(lambda x: x[:4], List1)