programing

C # 목록 이해 소개

copyandpastes 2021. 1. 14. 23:35
반응형

C # 목록 이해 소개


C #에서 목록 이해를 어떻게 수행 할 수 있습니까?


List Comprehension은 프로그래머가 집합의 구성원이 충족해야하는 속성을 설명 할 수있는 집합 표기법의 한 유형입니다. 일반적으로 기존 세트에 일부 유형의 조합, 변환 또는 축소 기능을 적용하여 다른, 이미 존재하는, 세트 또는 세트를 기반으로 세트를 생성하는 데 사용됩니다.

다음 문제를 고려하십시오. 0에서 9까지 10 개의 숫자 시퀀스가 ​​있고 해당 시퀀스에서 모든 짝수를 추출해야합니다. C # 버전 1.1과 같은 언어에서는이 문제를 해결하기 위해 다음 코드에 거의 국한되었습니다.

ArrayList evens = new ArrayList();
ArrayList numbers = Range(10);
int size = numbers.Count;
int i = 0;

while (i < size) 
{
    if (i % 2 == 0) 
    {
        evens.Add(i);
    }
    i++;
}

위의 코드는 아래의 전체 코드 목록에서 사용할 수있는 Range 함수의 구현을 보여주지 않습니다. C # 3.0 및 .NET Framework 3.5의 출현으로 이제 C # 프로그래머가 Linq를 기반으로하는 List Comprehension 표기법을 사용할 수 있습니다. 위의 C # 1.1 코드는 다음과 같이 C # 3.0으로 이식 할 수 있습니다.

IEnumerable<int> numbers = Enumerable.Range(0, 10);
var evens = from num in numbers where num % 2 == 0 select num;

기술적으로 말하면, 호출 이동 한 라이너로 기록 될 수 위의 C # 3.0 코드 Enumarable.Range (가) 생성의 LINQ 식에 고르게 시퀀스. C # List Comprehension 에서 해당 시퀀스에 함수 (모듈로 2)를 적용 하여 집합 번호입니다. 이것은 훨씬 더 간결한 방식으로 짝수 시퀀스를 생성하고 루프 구문을 사용하지 않습니다. 이제 스스로에게 물어볼 수 있습니다. 이것이 순전히 구문 설탕입니까? 잘 모르겠지만 확실히 조사하고 여기에서 직접 질문 할 수도 있습니다. 나는 이것이 단지 구문 설탕이 아니며 기본 모나드를 활용하여 수행 할 수있는 몇 가지 진정한 최적화가 있다고 생각합니다.

전체 코드 목록은 여기에서 볼 수 있습니다 .


C #에서 목록 이해를 수행하는 방법을 찾고있을 때 이것을 발견했습니다 ...

누군가 list comprehensions를 말할 때 나는 즉시 Python에 대해 생각합니다. 아래 코드는 다음과 같은 목록을 생성합니다.

[0,2,4,6,8,10,12,14,16,18]

Python 방식은 다음과 같습니다.

list = [2*number for number in range(0,10)]

C #에서 :

var list2 = from number in Enumerable.Range(0, 10) select 2*number;

두 방법 모두 느리게 평가됩니다.


이안 P

 return (from user in users
         where user.Valid
         select user.Name).ToArray();

LINQ를 사용하여 목록 이해와 유사한 식을 만들 수 있습니다. 다음은 이에 대해 설명하는 사이트입니다.

LINQ를 사용하여 C #의 List Comprehension

LINQ를 사용하여 C #의 목록 이해-2 부


튜토리얼은 아니지만 개념을 설명하는 몇 가지 코드는 다음과 같습니다.

public List<string> ValidUsers(List<User> users) {
  List<string> names = new List<string>();
  foreach(User user in users) {
    if(user.Valid) {
      names.Add(user.Name);
    }
  }
  return names;
}

참조 URL : https://stackoverflow.com/questions/130898/introduction-to-c-sharp-list-comprehensions

반응형