我有一个包含字符串的python列表变量.是否有一个python函数可以将一个传递中的所有字符串转换为小写,反之亦然,大写?
YOU*_*YOU 388
它可以通过列表推导来完成.这些基本上采取的形式[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']
Run Code Online (Sandbox Code Playgroud)
你也可以使用这个map
功能:
>>> map(lambda x:x.lower(),["A","B","C"])
['a', 'b', 'c']
>>> map(lambda x:x.upper(),["a","b","c"])
['A', 'B', 'C']
Run Code Online (Sandbox Code Playgroud)
Ned*_*ily 49
除了更容易阅读(对于许多人),列表理解也赢得了速度竞赛:
$ 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
Run Code Online (Sandbox Code Playgroud)
gho*_*g74 33
>>> map(str.lower,["A","B","C"])
['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
pax*_*blo 20
列表理解是我如何做到的,它是"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']
Run Code Online (Sandbox Code Playgroud)
mylist = ['Mixed Case One', 'Mixed Case Two', 'Mixed Three']
print(list(map(lambda x: x.lower(), mylist)))
print(list(map(lambda x: x.upper(), mylist)))
Run Code Online (Sandbox Code Playgroud)
对于这个样本,理解是最快的
$ 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
@Amorpheuses在这里给出了最简单答案的版本。
使用 val 中的值列表:
valsLower = [item.lower() for item in vals]
Run Code Online (Sandbox Code Playgroud)
这对于我使用 f = open() 文本源非常有效。
小智 5
一个学生问,另一个有同样问题的学生回答:))
fruits=['orange', 'grape', 'kiwi', 'apple', 'mango', 'fig', 'lemon']
newList = []
for fruit in fruits:
newList.append(fruit.upper())
print(newList)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
402018 次 |
最近记录: |