- 전체
- Python 일반
- Python 수학
- Python 그래픽
- Python 자료구조
- Python 인공지능
- Python 인터넷
- Python SAGE
- wxPython
- TkInter
- iPython
- wxPython
- pyQT
- Jython
- django
- flask
- blender python scripting
- python for minecraft
- Python 데이터 분석
- Python RPA
- cython
- PyCharm
- pySide
- kivy (python)
Python 일반 Python: List Comprehensions
2017.03.04 15:21
Python: List Comprehensions
Note: Lines beginning with ">>>" and "..." indicate input to Python (these are the default prompts of the interactive interpreter). Everything else is output from Python. |
Python supports a concept called "list comprehensions". It can be used to construct lists in a very natural, easy way, like a mathematician is used to do.
The following are common ways to describe lists (or sets, or tuples, or vectors) in mathematics.
S = {x² : x in {0 ... 9}}V = (1, 2, 4, 8, ..., 2¹²)M = {x | x in S and x even} |
You probably know things like the above from mathematics lessons at school. In Python, you can write these expression almost exactly like a mathematician would do, without having to remember any special cryptic syntax.
This is how you do the above in Python:
>>> S = [x**2 for x in range(10)]>>> V = [2**i for i in range(13)]>>> M = [x for x in S if x % 2 == 0]>>> >>> print S; print V; print M
|
I'm sure you want to see a more complicated example. :-) The following is yet another way to compute prime numbers. The interesting thing is that we first build a list of non-prime numbers, using a single list comprehension, then use another list comprehension to get the "inverse" of the list, which are prime numbers.
>>> noprimes = [j for i in range(2, 8) for j in range(i*2, 50, i)]>>> primes = [x for x in range(2, 50) if x not in noprimes]>>> print primes
|
NB: You can nest list comprehensions inside of each other, so you could write the above example with a single statement (without the need for the temporary variable "noprimes"). However, such lines tend to get long and less readable, so this is not recommended.
Of course, list comprehensions don't only work for numbers. Lists can contain anytype of elements, including strings, nested lists and functions. You can even mix different types within a list.
The following works on a list of strings and produces a list of lists. Each of the sublists contains two strings and an integer.
>>> words = 'The quick brown fox jumps over the lazy dog'.split()>>> print words
>>> >>> stuff = [[w.upper(), w.lower(), len(w)] for w in words]>>> for i in stuff:... print i...
>>> >>> stuff = map(lambda w: [w.upper(), w.lower(), len(w)], words)>>> for i in stuff:... print i...
|
The above example also demonstrates that you can do exactly the same thing with map() and a lambda function. However, there are cases when you cannot use map()and have to use a list comprehension instead, or vice versa. When you can use both, then it is often preferable to use a list comprehension, because this is more efficient and easier to read, most of the time.
You cannot use list comprehensions when the construction rule is too complicated to be expressed with "for" and "if" statements, or if the construction rule can change dynamically at runtime. In this case, you better use map() and / or filter()with an appropriate function. Of course, you can combine that with list comprehensions.
[출처] http://www.secnetix.de/olli/Python/list_comprehensions.hawk
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 10 |
[Kivy (python)] Kivy에서 Hello World
| 졸리운_곰 | 2024.12.20 | 358 |
| 9 |
[Kivy (python)] Kivy 시작하기 1 (1.11.1 버전 - 설치하기)
| 졸리운_곰 | 2024.12.20 | 401 |
| 8 | [Kivy (python)] Kivy 앱 배포: Android APK 생성하기 | 졸리운_곰 | 2024.12.20 | 347 |
| 7 |
[kivy (python)] [Python] 파이썬 키비(kivy) 앱 개발 - Screen Manager
| 졸리운_곰 | 2024.12.20 | 509 |
| 6 |
[kivy (python)] [Python] 파이썬 키비(kivy) 앱 개발 - 머티리얼 디자인, KivyMD
| 졸리운_곰 | 2024.12.20 | 392 |
| 5 |
[kivy (python)] [Python] 파이썬 키비(kivy) 앱 개발 - 레이아웃 개요와 입력창
| 졸리운_곰 | 2024.12.20 | 495 |
| 4 |
[kivy (python)] [Python] 파이썬 키비(Kivy) buildozer로 APK 앱 빌드 in Linux
| 졸리운_곰 | 2024.12.20 | 383 |
| 3 |
[kivy (python)] [Python] 파이썬 키비(kivy) 앱 개발 - 설치와 예제 앱 분석
| 졸리운_곰 | 2024.12.20 | 427 |
| 2 |
[kivy (python)] [Python] 파이썬 키비(kivy) 앱 개발 - kv 파일과 한글 폰트
| 졸리운_곰 | 2024.12.20 | 385 |
| 1 |
[kivy (python)] <재정리> 파이썬 키비(Kivy) buildozer로 APK 앱 완벽 변환하기 in Linux Ubuntu, 변환 환경 제공!
| 졸리운_곰 | 2024.12.20 | 598 |

