문자열이 포함 된 Python 목록을 모두 소문자 또는 대문자로 변환
문자열을 포함하는 파이썬 목록 변수가 있습니다. 한 번에 모든 문자열을 소문자로 또는 그 반대로 대문자로 변환 할 수있는 파이썬 함수가 있습니까?
리스트 이해로 수행 할 수 있습니다. 이것들은 기본적으로의 형태를 취합니다 [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']
읽기 쉬운 (많은 사람들에게), 목록 이해도 스피드 레이스에서 승리합니다.
$ 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
>>> map(str.lower,["A","B","C"])
['a', 'b', 'c']
리스트 이해력은 내가 어떻게하는지, "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']
이 샘플에서는 이해력이 가장 빠릅니다.
$ python -m timeit -s 's = [ "one", "two", "three"] * 1000' '[x.s에서 x의 상한]' 루프 당 1000 루프, 3 : 3 : 809 usec $ python -m timeit -s 's = [ "one", "two", "three"] * 1000' 'map (str.upper, s)' 1000 루프, 루프 당 3 : 1.12 msec 최고 $ python -m timeit -s 's = [ "one", "two", "three"] * 1000' 'map (lambda x : x.upper (), s)' 1000 루프, 루프 당 3 : 1.77 msec 최고
같은 문제를 가진 다른 학생에게 질문하는 학생 :))
fruits=['orange', 'grape', 'kiwi', 'apple', 'mango', 'fig', 'lemon']
newList = []
for fruit in fruits:
newList.append(fruit.upper())
print(newlist)
mylist = ['Mixed Case One', 'Mixed Case Two', 'Mixed Three']
print map(lambda x: x.lower(), mylist)
print map(lambda x: x.upper(), mylist)
해결책:
>>> 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
.
한 번의 패스로 변환하여 다른 문자열과 일치시키는 것이 목적이라면 사용할 수도 있습니다 str.casefold()
.
이것은 ASCII 이외의 문자가 있고 ASCII 버전과 일치하는 경우에 유용합니다 (예 : maße vs masse) . 이러한 경우에는 실패 str.lower
하거나 통과합니다. 이것은 Python 3에서 사용할 수 있으며 아이디어는 https://stackoverflow.com/a/31599276/4848659 답변과 함께 자세히 설명됩니다 .str.upper
str.casefold()
>>>str="Hello World";
>>>print(str.lower());
hello world
>>>print(str.upper());
HELLO WOLRD
>>>print(str.casefold());
hello world
파이썬 3.6.8
In [1]: a = 'which option is the fastest'
In [2]: %%timeit
...: ''.join(a).upper()
762 ns ± 11.4 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In [3]: %%timeit
...: map(lambda x:x.upper(), a)
209 ns ± 5.73 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In [4]: %%timeit
...: map(str.upper, [i for i in a])
1.18 µs ± 11.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In [5]: %%timeit
...: [i.upper() for i in a]
3.2 µs ± 64.1 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
반복자가 아닌 출력으로 문자열 또는 목록이 필요한 경우 (Python3의 경우) ''.join(string).upper()
옵션을 다음 과 비교 하십시오.
In [10]: %%timeit
...: [i for i in map(lambda x:x.upper(), a)]
4.32 µs ± 112 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
'IT story' 카테고리의 다른 글
ANTLR : 간단한 예가 있습니까? (0) | 2020.04.23 |
---|---|
상위 5 개를 선택하는 LINQ 쿼리 (0) | 2020.04.23 |
div에서 SVG를 어떻게 중앙에 배치합니까? (0) | 2020.04.23 |
UNIX 쉘 스크립트의 목록에서 고유하거나 다른 값을 선택하십시오. (0) | 2020.04.23 |
Angular 2에서 조건부 속성을 추가하는 방법은 무엇입니까? (0) | 2020.04.23 |