파이썬 [8-3] 목록 생성 유형으로 시작하기 | 복잡한 식, 조건 필터링, 다층 표현의 목록을 생성

1리스트를 생성

목록을 생성하기 위해 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 우리는 범위 (1, 11)를 사용할 수있다 :

>>> range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环:

>>> L = []
>>> for x in range(1, 11):
...    L.append(x * x)
... 
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

그러나 너무 복잡주기 및 공식 목록 문 위에 생성 된 순환 라인 목록으로 대체 할 수있다 :

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

문구는 파이썬 - 특정 목록을 생성 유형 . 공식 목록을 사용하여, 그것은 매우 간단한 코드 생성 목록이 될 수 있습니다.

식의 목록을 작성할 때, 요소는 x는 * 루프, 당신은 목록을 만들 수 있습니다 다음에 전면에, 몇 번을 작성하는 데 유용 X, 곧이 구문을 잘 알고있을 것입니다 생성합니다.

작업 :

화학식 목록 생성 목록을 사용하세요 [1 × 2, × 4, 5 × 6, 7x8를, ..., 99x100]

팁 : 범위 (1, 100, 2) 목록을 생성 할 수있다 [1, 3, 5, 7, 9, ...]

암호:

print [x*(x+1) for x in range(1,100,2)]

그림 삽입 설명 여기

2, 복잡한 표현식

당신은 또한 반복 DICT 수, 루프 반복의 반복에 대한 일반 목록뿐만 아니라 사용합니다.

다음 DICT를 가정 해 봅시다 :

D = {아담 '95 '리사 '85'바트 ': 59}
HTML 테이블에리스트를 행 복잡한 식 수

tds = ['<tr><td>%s</td><td>%s</td></tr>' % (name, score) for name, score in d.iteritems()]
print '<table>'
print '<tr><th>Name</th><th>Score</th><tr>'
print '\n'.join(tds)
print '</table>'

참고 :
문자열 %, 지정된 매개 변수 %의 대안으로 포맷 할 수 있습니다. 문자열 () 메소드는 문자열 목록에 함께 넣을 수에 가입하세요.

HTML 파일로 결과를 밖으로 인쇄, 저장, 당신은 브라우저의 효과를 볼 수 있습니다

<table border="1">
<tr><th>Name</th><th>Score</th><tr>
<tr><td>Lisa</td><td>85</td></tr>
<tr><td>Adam</td><td>95</td></tr>
<tr><td>Bart</td><td>59</td></tr>
</table>
이름 점수
리사 (85)
아담 (95)
바트 (59)

작업 :

학생들은 통과하지 못한 대해 생성 된 표에서 빨간색으로 표시된 점수를 넣어주십시오.

팁 : 빨간색이 될 수있다 <td style="color:red">달성했다.

암호:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
def generate_tr(name, score):
    if score < 60:
        return '<tr><td>%s</td><td style="color:red">%s</td></tr>' % (name, score)
    return '<tr><td>%s</td><td>%s</td></tr>' % (name, score)
tds = [generate_tr(name, score) for name, score in d.iteritems()]
print '<table border="1">'
print '<tr><th>Name</th><th>Score</th><tr>'
print '\n'.join(tds)
print '</table>'

흑백 사진
(코드 아무 문제) (이 흑백 사진입니다)




도 3에 도시 된 바와 같이, 필터 조건

목록의 공식은 또한 판사 경우 다시 루프를 추가 할 수 있습니다. 예를 들면 :

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

우리는 범위 ()을 변경하지 마십시오, 짝수의 제곱을하려는 경우 경우, 당신은 화면 경우 추가 할 수 있습니다 :

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

은 if 조건이 참으로 판사 경우에만 다음 루프 현재의 요소가 목록에 추가하는 경우에만.

작업 :

목록, 문자열이 자본 반환 될 모든 다음 목록을받는 함수를 작성 해주세요, 문자열이 아닌 요소는 무시됩니다.

팁 :

  1. isinstance (X, STR)은 변수 x가 문자열인지를 결정할 수있다;

  2. 문자열 위 () 메소드가 반환 문자를 대문자.

암호:

def toUppers(L):
    return [x.upper() for x in L if isinstance(x, str)]
print toUppers(['Hello', 'world', 101])

그림 삽입 설명 여기

4 다층 식

루프가 중첩 될 수 위해, 따라서, 식 목록에 또한 목록을 생성하는 다중 루프를 사용할 수있다.

캐릭터 'ABC'와 '123'에 대한 두 개의 루프는 전체 어레이를 생성하는데 사용될 수있다 :

>>> [m + n for m in 'ABC' for n in '123']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

이 같은 루프 코드로 번역 :

L = []
for m in 'ABC':
    for n in '123':
        L.append(m + n)

작업 :

화학식리스트 삼층 루프를 사용하여, 세 자리 대칭성을 발견. 오른쪽은 왼쪽 또는 반전하기 때문에 예를 들어 121, 121, 대칭의 수이다.

암호:

print [100 * n1 + 10 * n2 + n3 for n1 in range(1, 10) for n2 in range(10) for n3 in range(10) if n1==n3]

그림 삽입 설명 여기

게시 20 개 원래 기사 · 원의 칭찬 0 · 조회수 (403)

추천

출처blog.csdn.net/yipyuenkay/article/details/104052791