Get it on Google Play


Wm뮤 :: c# list(리스트) 관련

블로그 이미지
가끔 그림그리거나 3D모델링하거나
취미로 로봇만드는
퇴직한 전자과 게임프로그래머
2020.3.48f1 , 2022.3.6f1 주로 사용
모카쨩
@Ahzkwid

Recent Comment

Archive


2017. 3. 23. 00:22 Unity/C#

내부값과 검색하여 하나라도 맞는지 검사하여 bool 반환 x는 내부값을 나타냄 반드시 x로 써야함

if (nameList.Exists(x => x.ToString() == "name"))

 

해당하는 값이 존재하는지 bool 반환함 위 코드와 같음

nameList.Contains("name")

 

해당 하는 조건에 맞는 항목들을 전부 지움, 아래의 경우는 ".meta"가 포함된경우 전부 지운다.

x는 내부값이고 무조건 x로 써야함

fileNames.RemoveAll(x => x.Contains(".meta"));

 

 

리스트 복제(깊은복사)

List<int> DNA_copy = DNA.GetRange(0, DNA.Count);

 

리스트복제 2

var list2 = new List<int>(list);

 

 

 

중간삽입

DNAcopy.Insert(index, mScript.irandom(random_value));
 
중간삽입(배열 및 리스트)
 list.InsertRange(index, 배열 혹은 리스트);
 
다중추가(배열 및 리스트)
 list.AddRange(배열 혹은 리스트);

 

 

Linq계열

using System.Linq;

//중복제거
//앞글자 3글자가 같은녀석들만 제거함, x => x.Substring(0,3) 이부분만 수정해서 쓰면 됨
list = list.GroupBy(x => x.Substring(0,3)).Select(x=>x.First()).ToList();

//중복제거2
//완벽히 동일한것만 제거
list = list.GroupBy(x => x).Select(x=>x.First()).ToList();

//그룹리스트 (같은값끼리 짝지어서 나온다)
List<int> list=new int[] { 1,1,1,2,2,3,4,4}.ToList();
var groupList = list.GroupBy(x => x).ToList();

for (int i = 0; i < groupList.Count; i++)
{
    var group = groupList[i].ToList();
    for (int j = 0; j < group.Count; j++)
    {
        Debug.Log(group[j]);
    }

}

//중복제거 심플버전 구조체만 가능(예를들어 게임오브젝트는 안된다)
list.Distinct();

//전부 더하기
list.Sum();



//슬라이스(자르기)
var list = new List<int>(new int[] { 1, 2, 3, 4, 5 });
var length = 3;
var sliceList =  list.Take(length).ToList();
Debug.Log(string.Join(", ", sliceList));
//결과: 1,2,3



//슬라이스2 (중간부터)
var list = new List<int>(new int[] { 1, 2, 3, 4, 5 });
var startIndex = 1;
var length = 3;
var sliceList =  list.Skip(startIndex).Take(length).ToList();
Debug.Log(string.Join(", ", sliceList));
//결과: 2,3,4

 

 

 

 

 

 

최댓값 (맥스)

double dividendMax = list.Max(x => x.dividend);

 

최댓값'들'

var timeMax = saves.Max(save => save.time);
var timeMaxSaves = saves.FindAll(save => save.time == timeMax);

 

 

 

셔플(미세한 편향, 비둘기집문제)

하지만 구조가 간단하므로 중요로직이 아니면 이걸로 처리한다 

using System.Linq;

//유니티버전
list = list.OrderBy(a => Random.value).ToList();

//닷넷버전
System.Random seed = new System.Random((Int32)DateTime.Now.Ticks);
list = list.OrderBy(a => seed.Next()).ToList();

 

셔플(완전한)

    public static void ShuffleList<T>(ref List<T> targetList)
    {
        for (int i = 0; i < targetList.Count; i++)
        {
            int j = Random.Range(0, targetList.Count);
            T t = targetList[i];
            targetList[i] = targetList[j];
            targetList[j] = t;
        }
    }

 

정렬//오름차순

creature_list.Sort();

 

정렬//내림차순 정렬

list.Sort((x, y) => y.CompareTo(x));

이것과 동일함

List<double> A;
List<double> B;

//동일버전
list.Sort((A, B) => B.CompareTo(A));

//람다 긴버전
list.Sort(delegate (var a, var b)
{
    return b.CompareTo(a);

});

//if방식
list.Sort(delegate (var a, var b)
{
    if (a > b)
    {
        return -1;
    }
    if (a < b)
    {
        return 1;
    }
    return 0;
});

//for방식
for (int i = 0; i < list.Count; i++)
{
    for (int j = i + 1; j < list.Count; j++)
    {
    	var a=list[i];
    	var b=list[j];
        if (a > b)
        {
            var t=a;
            a=b;
            b=t;
        }
    }
}

 

 

 

'Unity > C#' 카테고리의 다른 글

유니티 각도계산 모음  (0) 2017.11.06
유니티 함수 정리  (0) 2017.07.02
c# list와 array속도 비교  (3) 2017.01.25
posted by 모카쨩

  • total
  • today
  • yesterday

Recent Post

저사양 유저용 블로그 진입