파이썬 충돌 과정 연구 노트 - 제 4 장 : 작업하기 목록

목록을 트래버스

트래버스에 사용.

$ cat months.py
months=['jan','feb','march']
# 注意,months后的冒号(:)是必需的
for month in months:
# print之前必须缩进
        print(month)

특별한주의 공백 일 또는 그 이전에 문을 인쇄해야 <tab>, 키 수 쓰지 머리, 그렇지 않으면 오류 :

$ python3 months.py
  File "months.py", line 3
    print(m.title())
        ^
IndentationError: expected an indented block

결과는 다음과 같습니다 :

$ python3 months.py
jan
feb
march

또한 :

$ cat months.py
months=['jan','feb','march']
for month in months:
        print(f"the current month is {month.title()}.")

$ python3 months.py
the current month is Jan.
the current month is Feb.
the current month is March.

문 루프 대역 압입하면, 반복 실행한다 후 기록 (덴트) 내지 제 상단 행은 한번만 수행하는 경우.

$ cat months.py
months=['jan','feb','march']
for month in months:
        print(f"the current month is {month.title()}.")
        print('in loop')
print('not in loop')

$ python3 months.py
the current month is Jan.
in loop
the current month is Feb.
in loop
the current month is March.
in loop
not in loop

다음 코드 런타임 오류 :

$ cat months.py
months=['jan','feb','march']
for month in months:
        print(f"the current month is {month.title()}.")
print('not in loop')
        print('in loop')

$ python3 months.py
  File "months.py", line 5
    print('in loop')
    ^
IndentationError: unexpected indent

피 들여 쓰기 (식별) 오류

파이썬은 코드의 해당 라인 코드를 읽기 쉽게하기 위해 여부 들여 해석을 사용합니다.
for 루프 후 문은 적어도 하나 개의 라인을 들여해야 있습니다. 당신은 다중 행주기가 필요한 경우, 이러한 행은 들여 쓰기. 이것은 C 언어입니다 {}코드 블록과 유사하다.

불필요한 들여 부여되고 :

>>> a=1
>>>     print(a)
  File "<stdin>", line 1
    print(a)
    ^
IndentationError: unexpected indent

for 루프에서 불필요한 들여 쓰기 논리 오류가 발생합니다.
마지막으로, 대장의 마지막 루프 ( :)가 필요합니다.

번호 목록

다양한 기능을 사용하십시오.

>>> for i in range(1,5):
...     print(i)
...
1
2
3
4

범위 함수는 스텝 값 (스텝 사이즈)를 지정할 수있다 :

>>> for i in range(1, 11, 2):
...     print(i)
...
1
3
5
7
9

주 5과 5에서 정지를 의미하기 때문에, 인쇄되지 않습니다.

함수 반환 값이기 때문에, 따라서 범위 할당리스트하는데 사용될 수있다 :

>>> numbers=range(1,5)
>>> print(numbers)
[1, 2, 3, 4]

다음과 같은 기능을 평방 미터, 인쇄 **제곱을 나타내는를, 또 다른 초기화 목록은 첫 번째 줄 필요가 비어 있습니다 :

$ cat squares.py
squares = []
for value in range(1, 11):
     squares.append(value ** 2)
print(squares)

$ python squares.py
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

통계 함수의 일부 :

>>> nums = [ 1, 2, 3, 4 ]
>>> min(nums)
1
>>> max(nums)
4
>>> sum(nums)
10
>>> sum(nums)/len(nums)
2.5

List Comprehensions하나 개의 문장으로 루프 목록 지정에 대한 :

>>> squares = [value*10 for value in range(1, 11)]
>>> print(squares)
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

그리고 목록의 작품의 일부

슬라이스

목록의 일부는 두 개의 매개 변수에 끝까지 시작을 나타냅니다 :

>>> seasons = ['spring', 'summer', 'autumn', 'winter']
>>> print(seasons[1:2])
['summer']
>>> print(seasons[2:4])
['autumn', 'winter']
# 如果第一个参数省略,则开始于第一个成员
>>> print(seasons[:4])
['spring', 'summer', 'autumn', 'winter']
# 如果最后一个参数省略,则结束于最后一个成员
>>> print(seasons[0:])
['spring', 'summer', 'autumn', 'winter']
>>> print(seasons[-3:])
['summer', 'autumn', 'winter']

목록 부분은 루프를 사용할 수있다 :

>>> for s in seasons[0:]:
...     print(s)
...
spring
summer
autumn
winter

복사

실패의 예에서 첫번째보기 :

>>> seasons_copy=seasons
>>> print(seasons_copy)
['spring', 'summer', 'autumn', 'winter']
>>> seasons[0]='SPRING'
>>> print(seasons_copy)
['SPRING', 'summer', 'autumn', 'winter']

당신은 두 변수가 같은리스트를 가리키고,이 복사되지 않습니다 볼 수 있습니다.

다음은 올바른 방법입니다 :

>>> seasons = ['spring', 'summer', 'autumn', 'winter']
>>> seasons_copy = seasons[:]
>>> seasons[0]='SPRING'
>>> print(seasons_copy)
['spring', 'summer', 'autumn', 'winter']

튜플 (튜플)

목록의 불변 (불변)은 튜플을했다.
튜플은 아닙니다
에 포함되어있는 목록의 구성원 []정의. 튜플 (쉼표의 구성원 ,) 부문 :

d=1,2,3,4

그러나, 순서 아름답고, 또한 사용할 수있는 ()단 하나의 구성원,이 경우, 서라운드 ()필요가있다 :


>>> d=(1,2,3,4)
>>> d=(1,)
>>>> d[0]=5
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

이 같은 튜플 및 목록 탐색 반복하지 않습니다.
튜플 구성원을 수정하지만 튜플 변수입니다, 당신은 새로운 튜플을 가리킬 수 있습니다, 수정할 수 있습니다 말할 수 없다.

코드 스타일

코드는 더 자주 기록 된 것보다 읽기

향상 제안 파이썬 (에서 다음과 같은 권장 사항 PEP ).
4 개 공간을 대신 사용 <tab>들여 쓰기로
초과하지 않는 코드의 각 행 80 자
72 자 초과하지 않는 선 코멘트를
코드의 가독성을 향상시키기 위해 빈 줄을 사용하여

게시 된 352 개 원래 기사 · 원의 찬양 (42) · 전망 550 000 +

추천

출처blog.csdn.net/stevensxiao/article/details/103979609