파이썬 화이트 (10) 일반적인 실수, 당신은 여전히이 작업을합니까?

여기에 열 파이썬 유용한 팁과 트릭입니다. 그들 중 일부는 언어의 초보자는 종종 실수를합니다.

참고 : 우리는 파이썬 3 사용하는 가정

1. 목록 함축

당신은 목록이 있습니까 :bag = [1, 2, 3, 4, 5]

이제 당신은 두 번 할 모든 요소, 그것은 다음과 같습니다 :[2, 4, 6, 8, 10]

언어의 사전 경험을 바탕으로 대부분의 초보자는 그것을 이런 식으로 할 아마 것

bag = [1, 2, 3, 4, 5]  for i in range(len(bag)):      bag[i] = bag[i] * 2

그러나 더 좋은 방법이있다 :

bag = [elem * 2 for elem in bag]

아주 간단 하죠? 이것은 파이썬의 지능형리스트라고합니다.

목록 함축의 설명을 더보고 트레이 Hunner의 튜토리얼을 클릭합니다.

목록을 통과합니다

계속, 또는 위의 목록입니다.

가능하면 그렇게 피하려고 :

bag = [1, 2, 3, 4, 5]  
for i in range(len(bag)):  
    bag[i] = bag[i] * 2

대신 다음과 같이해야합니다 :

bag = [elem * 2 for elem in bag]

x가리스트 인 경우, 당신은 그것의 요소를 반복 할 수 있습니다. 대부분의 경우 각 요소의 인덱스를해야하지만 비한다면, 다음 기능을 열거 사용하지 마십시오. 그것은 다음과 같습니다 :

bag = [1, 2, 3, 4, 5]  
for i in range(len(bag)):  
    print(bag[i])

매우 직관적.

3. 교환 요소

파이썬이나 C 언어와 자바에서 오는 경우, 당신은이에 익숙해 수 있습니다 :

a = 5  
b = 10

# 交换 a 和 b
tmp = a  
a = b  
b = tmp

그러나 파이썬은 더 나은 더 자연스러운 방법을 제공합니다!

a = 5  
b = 10  
# 交换a 和 b
a, b = b, a

예쁜만큼, 맞죠?

4. 초기화 목록

당신은 정수 0의 목록을 원하는 경우 10, 당신이 먼저 생각할 수 있습니다 :

bag = []  
for _ in range(10):  
    bag.append(0)

그것은 또 다른 방법 :

bag = [0] * 10

더 우아한 참조하십시오.

참고 : 목록 목록이 포함되어있는 경우,이 얕은 복사본을 생성합니다.

예를 들면 :

bag_of_bags = [[0]] * 5 # [[0], [0], [0], [0], [0]]  
bag_of_bags[0][0] = 1 # [[1], [1], [1], [1], [1]]

아차! 모든 목록이 변경되었습니다, 우리는 첫 번째 목록을 변경하고 싶습니다.

그것을 읽고 그것을 수정 :

bag_of_bags = [[0] for _ in range(5)]  
# [[0], [0], [0], [0], [0]]

bag_of_bags[0][0] = 1  
# [[1], [0], [0], [0], [0]]

마음에 베어링 :

"조기 최적화는 모든 악의 근원이다"
목록이 필요 초기화, 자신에게 물어는?

건설 문자열

당신은 종종 문자열을 출력해야합니다. 많은 변수가있는 경우, 다음을 피하기 :

name = "Raymond"  
age = 22  
born_in = "Oakland, CA"  
string = "Hello my name is " + name + "and I'm " + str(age) + " years old. I was born in " + born_in + "."  
print(string)

이마, 그것은 그것을 많이 화가 보인다? 당신은 .format, 대신 아주 간단한 방법을 사용할 수 있습니다.

이 작업을 수행하려면 :

name = "Raymond"  
age = 22  
born_in = "Oakland, CA"  
string = "Hello my name is {0} and I'm {1} years old. I was born in {2}.".format(name, age, born_in) 
print(string)

훨씬 나아!

6. 반환 tuples(튜플)

파이썬은 인생을 더 쉽게 만들고, 당신이 함수에서 여러 요소를 반환 할 수 있습니다. 그러나 이러한 일반적인 오류를 자격의 튜플을 풀고 때 :

def binary():  
    return 0, 1

result = binary()  
zero = result[0]  
one = result[1]

이 필요하지 않습니다, 당신은이를 대체 할 수있다 :

def binary():  
    return 0, 1

zero, one = binary()

모든 요소가 밑줄로 반환해야하는 경우 _ :

zero, _ = binary()

그것은 매우 효율적입니다!

제 통로 Dicts(사전)

당신은 종종 줄 것이다 dicts작성 key,pair(키, 값).

당신이 존재하지 않는 액세스하려고하는 경우 dictkey, 방지하기 위해 될 수있다 KeyError, 당신은이 작업을 수행하는 경향이 실수를 :

countr = {}  
bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]  
for i in bag:  
    if i in countr:
        countr[i] += 1
    else:
        countr[i] = 1

for i in range(10):  
    if i in countr:
        print("Count of {}: {}".format(i, countr[i]))
    else:
        print("Count of {}: {}".format(i, 0))

그러나와 get()더 좋은 방법.

countr = {}  
bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]  
for i in bag:  
    countr[i] = countr.get(i, 0) + 1

for i in range(10):  
    print("Count of {}: {}".format(i, countr.get(i, 0)))

물론 당신이 사용할 수있는 setdefault대신에.

그것은 또한 더 간단하지만 약간의 추가 비용 접근법을 사용 :

bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]  
countr = dict([(num, bag.count(num)) for num in bag])

for i in range(10):  
    print("Count of {}: {}".format(i, countr.get(i, 0)))

당신은 또한 사용할 수 있습니다 dict함축한다.

countr = {num: bag.count(num) for num in bag}

그들은 각 때문에 두 방법 모두 큰 오버 헤드 count목록을 통과합니다 호출됩니다.

8 라이브러리를 사용하여

그냥 기존 라이브러리는 당신이 정말로하고 싶은 일을 할 수 있습니다 가져옵니다.

또는 위의 예제 것을, 우리는 횟수를 목록에 나타나는 수를 계산하는 함수를 만들었습니다. 음, 그런 일을 할 수있는 라이브러리는 이미 존재한다.

from collections import Counter  
bag = [2, 3, 1, 2, 5, 6, 7, 9, 2, 7]  
countr = Counter(bag)

for i in range(10):  
    print("Count of {}: {}".format(i, countr[i]))

라이브러리를 사용하는 몇 가지 이유 :

코드는 정확하고 테스트입니다.
그들의 알고리즘은 최적의, 그래서 더 빨리 실행될 수 있습니다.
추상화 : 그들은 취소 및 문서 친화적 인, 아직 구현되지 않은 것들에 초점을 맞출 수 가리 킵니다.
마지막으로, 이미, 당신은 재활용 휠이 없습니다.

목록 9. 슬라이스 / 공정

지정할 수 있습니다 start점과 stop같은 점을, list[start:stop:step]. 우리는 목록의 다섯 개 가지 요소 전에 제거 :

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  
for elem in bag[:5]:  
    print(elem)

이것은 우리가 지정한 슬라이스있다 stop가 목록에서 다섯 개 가지 요소를 제거하기 전에 중지 한 후, 포인트는 5입니다.

수행하는 방법의 마지막 5 개 요소하면?

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  
for elem in bag[-5:]:  
    print(elem)

나는 그것을 이해하지? -5이 목록의 끝에서 다섯 개 가지 요소를 의미한다.

당신이 요소를 간격 작업을 나열 할 경우, 당신은 할 수 있습니다 :

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  
for index, elem in enumerate(bag):  
    if index % 2 == 0:
        print(elem)

그러나 당신은이 방법을 수행해야합니다

bag = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  
for elem in bag[::2]:  
    print(elem)

# 或者用 ranges
bag = list(range(0,10,2))  
print(bag)

이 단계의 목록입니다. list[::2]두 단계 동안 추출 요소 목록을 의미한다.

당신이 사용할 수있는 list[::-1]멋진 플립 목록을.

10. 탭 키 또는 스페이스 바를

장기적으로, 탭 및 공백 믹스 재해에, 당신이 볼 수됩니다 IndentationError: unexpected indent. 당신은 탭 키 또는 스페이스 바를 선택하든, 당신은 당신의 파일 및 프로젝트에 보관해야합니다.

공간 대신 ​​탭을 사용하는 한 가지 이유는, 탭은 모든 편집기에서 동일하지 않습니다. 그것은 편집기의 사용에 따라 달라집니다, 탭 2-8 공간으로 간주 될 수 있습니다.

코드를 작성할 때 당신은 또한 공간 탭을 정의 할 수 있습니다. 그래서 당신은 탭으로 약간의 공간을 사용하도록 선택할 수 있습니다. 네 공백 대부분의 파이썬 사용자.

이것은 당신이 큰 또는 작은 흰색 암소, 또는 함께 진행 상황을 이해하는 법을 배워야 함께 올 수있는 라인으로 전환 할 것인지, 내 학습 파이썬 스커트 [784758214]입니다! 내부 스커트는 개발 도구, 건조 제품과 공유 할 수있는 기술 많은 정보를 제공합니다! 나는 초보자 우회 희망

정교한 천천히 재생, 너무 빠른 성공하지 마십시오.

당신이 흥미있는 프로그램을 느끼는 경우, 성장은 더 이상 고통없는, 재미 학습이된다.

추천

출처blog.csdn.net/haoyongxin781/article/details/90347772