list.reverse(), reversed(list) 차이

* reverse() 함수 : 리스트를 제자리에서 반대로 뒤집는 메서드

- 반환값이 없고, 리스트를 직접 수정한다.

따라서 list1.reverse()를 출력하려고 할 경우, 반환값이 없기 때문에 None이 출력된다.

list1 = [1, 2, 3, 4]

print(list1.reverse()) # 출력 : None

 

거꾸로 출력하려고 싶다면, 함수로써 동작을 시킨 후 직접 수정된 list1의 값을 출력해야한다.
(단, 리스트가 수정이 되기 때문에 이전의 값은 지워진다.)

list1 = [1, 2, 3, 4]

list1.reverse()

print(list1) # 출력 : [4, 3, 2, 1]

 

 

*reversed()함수 : 뒤집힌 리스트의 iterator를 반환하는 함수

- 반환값 : iterator

 이 경우 반환값이 있지만, iterator로 반환이 되어 이 또한 원하는 결과가 아닐 것이다.

list1 = [1, 2, 3, 4]

print(reversed(list1)) # 출력 : <list_reverseiterator object at 0x7909098e9900>

 

이때에는 iterator를 다시 list로 변환하여 출력해야 한다. 때문에 list()함수로 감싼 뒤에 출력할 수 있다.

list1 = [1, 2, 3, 4]

print(list(reversed(list1))) # 출력 : [4, 3, 2, 1]

 

list.sort()와 sorted(list) 함수도 동일하게 적용된다.

'Python' 카테고리의 다른 글

[파이썬] 리스트, 딕셔너리 함수  (0) 2025.01.04

리스트 관련 함수

1. .list() : 리스트 생성

2. .append(item) : 리스트 끝에 요소 추가

3. .extend([3, 4]) : 리스트 + 리스트

4. .inset(index, item) : 특정 위치에 요소 삽입

5. .remove(item) : 첫번째로 발견되는 특정 요소 제거

6. .pop(index) : 특정 위치의 요소를 제거하고 반환

7. .clear() : 모든 요소 제거

8. .count(item) : 특정 요소의 개수 반환

9. .sort() : 정렬
    reverse=True

* sort()와 sorted() 차이

 

  • list.sort()는 리스트 자체를 정렬하며 반환값이 None입니다.
  • sorted(list)는 원본 리스트는 유지하고, 정렬된 새로운 리스트를 반환합니다.

 

10. .reverse() : 리스트 순서 뒤집기

11. .copy() : 리스트 복사

12. .index(value) : 특정값이 처음으로 나타나는 인덱스 반환

 

딕셔너리 관련 함수

1. .dict() : 딕셔너리 생성

2. .keys() / .values() : 모든 키/값 반환

3. .items() : 키-값 쌍 반환

4. .get(key) : 키에 해당하는 값 반환

5. .update(other_dic) : 다른 딕셔너리를 병합

6. .pop(key) : 키에 해당하는 값을 제거하고 반환

7. .clear() : 모든 키-값 쌍 제거

8. sorted() : 정렬

my_dict = {'b':3, 'a':1, 'c':2}

print(sorted(my_dict)) #딕셔너리 키만 정렬

# key 기준 정렬
print(dict(sorted(my_dict.items())) #['a':1, 'b':3, 'c':2])

# value 기준 정렬
print(dict(sorted(my_dict.items(), key = lambda item:item[1])) #['a':1, 'c':2, 'b':3])

 

* enumerate(iterable) : (index, value) 형태의 튜플을 반환

- iterable : 리스트, 튜플, 문자열 등 반복 가능한 객체

 

* 중첩 리스트에서 값의 인덱스 찾기

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

for i, sub_list in enumerate(nested_list) :
	if 5 in sub_list :
    	col_index = sub_list.index(5)
        print(f"[{i}, {col_index}]")

'Python' 카테고리의 다른 글

[파이썬] list.reverse(), reversed(list) 차이  (1) 2025.01.09

git remote -v

연결되어있는 깃허브 저장소가 뜬다.

git remote remove origin

명령어로 저장소와 연결을 끊는다.

다시한번 명령어로 확인해보았을 때, 연결이 끊어짐을 확인할 수 있었다.

 

 

 

1. package.json 파일이 없는 경우

 

npm start 명령을 입력했지만, 아래와 같은 오류가 떴다.

club> npm start
npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path C:\Users\...\WebPrograming TeamProject\club\package.json
npm ERR! errno -4058
npm ERR! enoent Could not read package.json: Error: ENOENT: no such file or directory, open 'C:\Users\...\WebPrograming TeamProject\club\package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! A complete log of this run can be found in: C:\Users\clala\AppData\Local\npm-cache\_logs\2024-10-12T08_25_52_763Z-debug-0.log

 

  • package.json 파일 확인: 폴더에 package.json 파일이 있는지 확인해보자. 이 파일이 없으면 npm 명령을 실행할 수 없다.
  • package.json 파일 생성 (없을 경우): 폴더에 package.json 파일이 없으면 npm init 명령을 실행해서 파일을 생성한다. 기본 설정을 완료한 후 다시 npm install을 실행해서 의존성을 설치하고, 이후 npm start를 입력해본다.
    npm init -> npm install - npm start

 

 

2. start 스크립트 에러

아래 에러메세지는 현재 package.json 파일의 scripts 섹션에 start 스크립트가 정의되어 있지 않아 발생하는 문제이다.  

 

package.json 파일을 보았을 때, start에 대한 정의가 되어있지 않음을 확인할 수 있었다.

 

아래와 같이 start 정의 부분을 추가하여 주면, 문제가 해결됨을 확인할 수 있었다.

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "react-scripts start" // 이부분 추가
  },

Rebase

  • 병합처럼 두 브랜치를 합칠 때 사용한다.
  • 소스트리에서는 “재배치”
  • 장점
    • 커밋 히스토리가 깔끔하게 정리된다.
  • 단점
    • 이미 원격 저장소에 올라간 경우, 협업하고 있는 경우에 위험하다.

'Github' 카테고리의 다른 글

Commit --amend와 Stash  (0) 2024.10.01
커밋 되돌리기  (0) 2024.10.01
pull 및 충돌 해결하기  (0) 2024.10.01
git 브랜치 병합하기(merge)  (0) 2024.10.01
git 브랜치  (0) 2024.10.01

브랜치 체크아웃 주의사항

브랜치를 만들고 체크아웃을 하려면 작업 디렉토리가 깨끗해야 한다.

  • 변경사항이 있을 때에는 다른 브랜치로 체크아웃을 못한다.
  • 예시 : 변경사항이 있지만 커밋하지 않았을 때

변경사항이 있더라도 체크아웃 가능하게 하기 위한 방법

방법1. commit --amend

  1. 1️⃣ 브랜치에서 일단 (임시로) 커밋을 한다.
  2. 2️⃣ 브랜치로 체크아웃을 한 뒤, 작업을 한다.
  3. 다시 1️⃣ 브랜치로 되돌아 온다.
  4. 1️⃣ 브랜치의 작업을 이어서 마무리 짓는다.
  5. 커밋 덮어쓰기 (commit --amend)를 한다.
    • 커밋할 때 커밋옵션 - 마지막 커밋 정정
  6. (선택) 필요하다면 git push --force 를 한다.

방법2. Stash

Stash는 다른 브랜치로 체크아웃하기 전에 현재 작업내용을 저장하는 임시 저장소를 말한다.

  • 주의 사항
    • 신규 파일일 경우, 스태시가 안된다. → 스테이지에 올린 다음 스태시에 올려야 한다.
  • 더 이상 필요없다면 Stash에서 삭제한다.

'Github' 카테고리의 다른 글

Rebase를 사용해서 트리 정리하기  (0) 2024.10.01
커밋 되돌리기  (0) 2024.10.01
pull 및 충돌 해결하기  (0) 2024.10.01
git 브랜치 병합하기(merge)  (0) 2024.10.01
git 브랜치  (0) 2024.10.01

방법1. Reset (비추)

초기화하고 싶은 커밋을 클릭하여 이 커밋까지 현재 브랜치를 초기화 - Hard

  • 문제점
    • 원격에 푸시하지 않았더라면, 커밋이 완전히 다 날아간다.
    • push할 때 강제 push가 필요하다.
      • 소스트리에서는 지원하지 않고, 터미널에서 git push -- force 명령어를 입력해야한다.
      • 다른 방법 → merge하고 push하기
  • reset은 웬만하면 하지 않는 것이 좋다.

방법2. 새로운 Branch 생성하여 되돌리기 (추천)

1️⃣ 브랜치에서 작업을 하여 새로운 커밋 발생

이전 커밋으로 되돌리고 싶으면 1️⃣ 브랜치에서 새로운 2️⃣ 브랜치를 생성한다.

작업을 다했다면 1️⃣ 브랜치로 체크아웃을 한 뒤, 1️⃣ 브랜치에서 2️⃣ 브랜치와 merge를 한다.

  • 문제점
    • 트리가 지저분해진다.

방법3. Revert (유용)

되돌릴 커밋을 선택하고 커밋 되돌리기 누르면 새로운 커밋이 생긴다.

c3 커밋에서 c2로 되돌아가고 싶다면, c3에서 revert를 해준다. 그러면 c3`라는 새로운 커밋이 생기고 이 커밋은 c2와 동일하다.

  • 장점
    • 커밋을 보존하면서 내용만 되돌릴 수 있다.
    • 이전 커밋이 남는다.
  • revert로 여러 커밋을 되돌리려면
    • 최신부터 순서대로 revert를 반복 적용한다.
    • 터미널 → git revert HEAD HEAD~1

'Github' 카테고리의 다른 글

Rebase를 사용해서 트리 정리하기  (0) 2024.10.01
Commit --amend와 Stash  (0) 2024.10.01
pull 및 충돌 해결하기  (0) 2024.10.01
git 브랜치 병합하기(merge)  (0) 2024.10.01
git 브랜치  (0) 2024.10.01

작업하기 전에 pull이 있다면 먼저 해주고 시작하는 게 좋다.

안 쓰는 브랜치 삭제하기

  • 현재 브랜치가 아닌 경우 간단하게 삭제 가능
  • 브랜치를 삭제했을 경우 사라지는 커밋이 있는지 없는지 확인하자!

git pull

  • 서버의 내용(원격, github)이 내 pc(로컬)보다 최신일 경우 pull을 적용한다.
  • pull = fetch + merge

<aside> 📎 파일 저장할 때에는 마지막에 한 줄 정도 비워놓고 저장하는 게 좋다!

</aside>

충돌의 발생원인

  • 자동 병합을 실패했을 경우 발생
  • 주로 두 커밋이 같은 파일을 편집했을 경우 발생

에디터를 이용한 충돌 해결

  • 수동으로 고쳐준다. → 저장
  • 다시 커밋하기

sourceTree를 이용한 충돌 해결

  • 내것 또는 저장소 것 선택하기

'Github' 카테고리의 다른 글

Commit --amend와 Stash  (0) 2024.10.01
커밋 되돌리기  (0) 2024.10.01
git 브랜치 병합하기(merge)  (0) 2024.10.01
git 브랜치  (0) 2024.10.01
add→commit→push  (4) 2024.10.01

병합이란?

하나의 브랜치를 현재 브랜치와 합치는 것을 병합(merge)라고 한다.

깃 브랜칭을 배울 수 있는 사이트

Learn Git Branching

  • *는 헤더 브랜치를 나타냄
  • git branch version2 : version2라는 브랜치가 생성된다.
  • git checkout version2 : version2가 헤더 브랜치가 된다.
  • 다시 master가 헤더 브랜치가 되도록 변경 후, git merge version2 : master와 version2가 병합된다.

 

 

상황1 : 헤드 브랜치에 변경 사항이 없을 경우 → Fast-forward

  1. 합치려는 브랜치가 헤드 브랜치로부터 시작되었다.
  2. 그 사이 헤드 브랜치에는 전혀 갱신이 없었다.

헤드브랜치인 master에서 version2가 시작되고 두번 커밋한 상태이다. 여기서 병합을 하면 단순하게 master 브랜치가 가르키는 커밋이 version2의 커밋으로 이동한다.

상황2 : 가지가 생겨난 경우

  1. 과거의 커밋으로부터 브랜치를 생성해서 작업을 한 경우
  2. 새로운 브랜치 작업 이후에 헤드에 다른 새 커밋이 있는 경우
  3. 여러 브랜치를 동시에 작업하면서 병합을 시도할 경우

  • merge 충돌되면, 수동으로 작업해야한다.
  • 브랜치가 필요없다면, 삭제해도 된다.

'Github' 카테고리의 다른 글

커밋 되돌리기  (0) 2024.10.01
pull 및 충돌 해결하기  (0) 2024.10.01
git 브랜치  (0) 2024.10.01
add→commit→push  (4) 2024.10.01
[Github] 인증 토큰 생성  (0) 2024.10.01
📌 브랜치를 새로 생성하면 기존의 마스터 브랜치의 내용은 그대로 보존하면서 새로운 작업 환경을 생성하는 것이다.

 

브랜치란?

기존 내용을 유지한 채 새로운 내용을 추가하고 싶을 때 사용한다.

  • 특정 커밋으로 돌아가고 싶을 때, 그 커밋에서부터 브랜치를 생성한다.

 

 

현재 브랜치 변경하기

  • 한 번에 하나의 브랜치에서만 작업 가능하다.
  • 현재 작업 중인 브랜치 = 헤드 브랜치
  • 체크아웃 : 브랜치를 변경하기 위함
    • 특정 브랜치(혹은 커밋)으로 돌아가고 싶을 때 사용
  • 소스트리의 체크아웃 : 브랜치 이름을 더블 클릭하는 것만으로 체크아웃 가능
  • 각각 체크아웃을 하면 각 브랜치의 내용으로 폴더안의 파일이 변한다.
  • 아무것도 만들지 않으면 master 브랜치가 생성된다.
    • master브랜치는 사람들과 공유하고 싶은 최종 결과물이 있어야하는 곳

'Github' 카테고리의 다른 글

커밋 되돌리기  (0) 2024.10.01
pull 및 충돌 해결하기  (0) 2024.10.01
git 브랜치 병합하기(merge)  (0) 2024.10.01
add→commit→push  (4) 2024.10.01
[Github] 인증 토큰 생성  (0) 2024.10.01

+ Recent posts