首页 文章

将包含字符串的Python列表转换为小写或大写

提问于
浏览
173

我有一个包含字符串的python列表变量 . 是否有一个python函数可以将一个传递中的所有字符串转换为小写,反之亦然,大写?

9 回答

  • 28

    解:

    >>> s = []
    >>> p = ['This', 'That', 'There', 'is', 'apple']
    >>> [s.append(i.lower()) if not i.islower() else s.append(i) for i in p]
    >>> s
    >>> ['this', 'that', 'there', 'is','apple']
    

    此解决方案将创建一个包含小写项目的单独列表,无论其原始情况如何 . 如果原始案例是高位,则 list s 将包含 list p 中相应项目的小写 . 如果 list p 中列表项的原始大小写已经是小写,则 list s 将保留项的大小写并保持小写 . 现在您可以使用 list s 而不是 list p .

  • 42

    它可以通过列表推导来完成 . 这些基本上采用 [function-of-item for item in some-list] 的形式 . 例如,要创建一个新列表,其中所有项目都是较低的(或在第二个代码段中为大写),您将使用:

    >>> [x.lower() for x in ["A","B","C"]]
    ['a', 'b', 'c']
    
    >>> [x.upper() for x in ["a","b","c"]]
    ['A', 'B', 'C']
    

    您还可以使用 map 函数:

    >>> map(lambda x:x.lower(),["A","B","C"])
    ['a', 'b', 'c']
    >>> map(lambda x:x.upper(),["a","b","c"])
    ['A', 'B', 'C']
    
  • 312

    一个学生问,另一个同样有问题的学生回答:))

    fruits=['orange', 'grape', 'kiwi', 'apple', 'mango', 'fig', 'lemon']
    newList = []
    for fruit in fruits:
        newList.append(fruit.upper())
    print(newlist)
    
  • 15

    除了更容易阅读(对于许多人),列表理解也赢得了速度竞赛:

    $ python2.6 -m timeit '[x.lower() for x in ["A","B","C"]]'
    1000000 loops, best of 3: 1.03 usec per loop
    $ python2.6 -m timeit '[x.upper() for x in ["a","b","c"]]'
    1000000 loops, best of 3: 1.04 usec per loop
    
    $ python2.6 -m timeit 'map(str.lower,["A","B","C"])'
    1000000 loops, best of 3: 1.44 usec per loop
    $ python2.6 -m timeit 'map(str.upper,["a","b","c"])'
    1000000 loops, best of 3: 1.44 usec per loop
    
    $ python2.6 -m timeit 'map(lambda x:x.lower(),["A","B","C"])'
    1000000 loops, best of 3: 1.87 usec per loop
    $ python2.6 -m timeit 'map(lambda x:x.upper(),["a","b","c"])'
    1000000 loops, best of 3: 1.87 usec per loop
    
  • 6
    >>> map(str.lower,["A","B","C"])
    ['a', 'b', 'c']
    
  • 2

    对于这个样本,理解是最快的

    $ python -m timeit -s 's=["one","two","three"]*1000' '[x.upper for x in s]'
    1000 loops, best of 3: 809 usec per loop
    
    $ python -m timeit -s 's=["one","two","three"]*1000' 'map(str.upper,s)'
    1000 loops, best of 3: 1.12 msec per loop
    
    $ python -m timeit -s 's=["one","two","three"]*1000' 'map(lambda x:x.upper(),s)'
    1000 loops, best of 3: 1.77 msec per loop
    
  • 0
    mylist = ['Mixed Case One', 'Mixed Case Two', 'Mixed Three']
    print map(lambda x: x.lower(), mylist)
    print map(lambda x: x.upper(), mylist)
    
  • 1

    列表理解是我如何做到的,它是“Pythonic”的方式 . 以下脚本显示了如何将列表转换为全部大写然后再转换为低级:

    pax@paxbox7:~$ python3
    Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
    [GCC 5.4.0 20160609] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    
    >>> x = ["one", "two", "three"] ; x
    ['one', 'two', 'three']
    
    >>> x = [element.upper() for element in x] ; x
    ['ONE', 'TWO', 'THREE']
    
    >>> x = [element.lower() for element in x] ; x
    ['one', 'two', 'three']
    
  • 0

    如果你的目的是通过一次转换来匹配另一个字符串,你也可以使用 str.casefold() .

    当你有非ascii字符并与ascii版本匹配时(例如:maßevsmasse),这很有用 . 虽然 str.lowerstr.upper 在这种情况下失败, str.casefold() 将通过 . 这在Python 3中可用,并且使用答案https://stackoverflow.com/a/31599276/4848659详细讨论了这个想法 .

    >>>str="Hello World";
    >>>print(str.lower());
    hello world
    >>>print(str.upper());
    HELLO WOLRD
    >>>print(str.casefold());
    hello world
    

相关问题