반응형
목록 이해에서 조건식(if 및 other 식)을 사용하려면 어떻게 해야 합니까?
특정 범위의 홀수 목록을 생성하는 목록 이해 기능이 있습니다.
[x for x in range(1, 10) if x % 2]
그러면 짝수를 제거하는 필터가 생성됩니다.대신 조건부 논리를 사용하여 짝수가 다르게 취급되지만 여전히 목록에 기여하도록 하고 싶습니다.이 코드를 시도했지만 실패합니다.
>>> [x for x in range(1, 10) if x % 2 else x * 100]
File "<stdin>", line 1
[x for x in range(1, 10) if x % 2 else x * 100]
^
SyntaxError: invalid syntax
Python 표현식에서는 다음과 같은 구문을 사용할 수 있습니다.
1 if 0 is 0 else 3
목록 이해 내에서 어떻게 사용할 수 있습니까?
x if y else z
는 각 요소에 대해 반환하는 식의 구문입니다.따라서 다음과 같은 것이 필요합니다.
[ x if x%2 else x*100 for x in range(1, 10) ]
첫 번째 예에서는 필터를 사용하고 있지만 두 번째 예에서는 사용하지 않기 때문에 혼란이 발생합니다.두 번째 예에서는 3진 연산자 식을 사용하여 각 값을 다른 값에 매핑합니다.
필터를 사용하면, 다음의 것이 필요하게 됩니다.
[ EXP for x in seq if COND ]
필터가 없는 경우:
[ EXP for x in seq ]
그리고 두 번째 예에서 표현은 "복잡한" 표현으로, 우연한 경우,if-else
.
[x if x % 2 else x * 100 for x in range(1, 10) ]
목록 이해에도 사용할 수 있습니다.
A=[[x*100, x][x % 2 != 0] for x in range(1,11)]
print A
또 하나의 해결책입니다.누군가 마음에 들어 하길 바랍니다.
사용방법 : [False, True][식]
>>> map(lambda x: [x*100, x][x % 2 != 0], range(1,10))
[1, 200, 3, 400, 5, 600, 7, 800, 9]
>>>
#음수값과 양의 값 배열 목록을 압축하는 방법
my_list=[-2,-3,0,1,5]
squred_values=[]
squred_values=[-i**2 if i<0 else i**2 for i in my_list]
#또는
for i in my_list:
if i<0:
squred_values.append( -i**2)`enter code here`
else:
squred_values.append( i**2)
일람표 이해에 대한 두 가지
ex = [['obi', 'is', '#alive'],['oge', 'is', 'beautiful'],
['Ade', 'the', '#comedian', 'de', '#rich'],['Jesus', 'wept']]
res = [j if j.startswith("#") else "_"+j for i in ex for j in i]
언급URL : https://stackoverflow.com/questions/17321138/how-can-i-use-a-conditional-expression-expression-with-if-and-else-in-a-list-c
반응형
'programing' 카테고리의 다른 글
MySQL my.cnf 위치를 찾으려면 어떻게 해야 합니까? (0) | 2022.10.04 |
---|---|
편백:요소가 존재하지 않는지 테스트 (0) | 2022.10.04 |
Vue에서 라디오 버튼을 확인하는 방법v-model을 사용하지 않는 JS 2 (0) | 2022.10.04 |
서버의 현재 부하에 영향을 주지 않도록 MySQL 덤프를 느리게 하려면 어떻게 해야 합니까? (0) | 2022.10.04 |
x가 여러 값과 동일한 경우 어떻게 선택해야 합니까? (0) | 2022.10.04 |