이진 목록을 문자 목록으로 변환하는 가장 좋은 방법 (두 개의 특수 문자)

엘라 헤

다음과 같은 특별한 목록이 있습니다.

[0,0,0,1,0,1,0,1,1,1,0,1]

다음과 같은 문자 목록에 매핑하고 싶습니다.

['+','+','+','-','+','-','+','-','-','-','+','-']

여기에 몇 가지 코드가 있습니다. 공동 확률을 계산하기 위해 확률을 곱합니다.

def solve_all_asigned(self,joint_s):
    mult_val=1
    for tab in self.tables:
        if tab['decision']:
            continue
        name=tab['name']
        nr=name.replace('.',' ')
        nr_spd=re.split(' ',nr)
        val=''
        check_list=[x in joint_s.keys() for x in nr_spd]
        if False in check_list:
            continue
        val=''.join(map(joint_s.get,nr_spd))
        mult_val=mult_val*tab[val]
    return mult_val

n=22
joint_s2={}
all_combinations=list(itertools.product([0,1],repeat=n))
for binlist in all_combinations:
    for i in range(n):
        joint_s2[nan_set[i]]='+' if binlist[i]=='0' else '-'
    s.append(self.solve_all_asigned(joint_s2))
ss=sum(s)

joint_s:{'AA': 'nan', 'AC': 'nan', 'AB': 'nan', 'AE': 'nan', 'AD': 'nan', 'AF': 'nan', 'A': 'nan', 'C': 'nan', 'B': 'nan', 'E': 'nan', 'D': 'nan', 'G': 'nan', 'F': 'nan', 'I': 'nan', 'H': 'nan', 'K': 'nan', 'J': 'nan', 'M': 'nan', 'L': 'nan', 'O': 'nan', 'N': 'nan', 'Q': 'nan', 'P': '+', 'S': 'nan', 'R': 'nan', 'U': 'nan', 'T': 'nan', 'W': 'nan', 'V': 'nan', 'Y': 'nan', 'X': '+', 'Z': 'nan'}
nan_set:['A', 'C', 'B', 'E', 'D', 'G', 'F', 'I', 'H', 'K', 'J', 'M', 'L', 'O', 'N', 'Q', 'S', 'R', 'U', 'T', 'W', 'V']
tab:{'name': 'A.B', '--': 0.19999999999999996, 'decision': False, '+-': 0.6, '++': 0.4, '-+': 0.8}

어떻게 할 수 있습니까?

PM 2Ring

원래 질문에 답하기 위해 0 및 1 정수 목록을 더하기 및 빼기 기호에 매핑하는 효율적인 방법이 있습니다.

binlist = [0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1]
a = ['+-'[u] for u in binlist]
print(a)

산출

['+', '+', '+', '-', '+', '-', '+', '-', '-', '-', '+', '-']

제가 위에서 말한대로하지만,이 실제로 확률 계산에 필요하지.

다음은 코드를 개선 할 수있는 몇 가지 다른 개선 사항입니다.

all_combinations=list(itertools.product([0,1],repeat=n))
for binlist in all_combinations:

많은 RAM을 낭비합니다 . 들어는 n = 22all_combinations목록은 2200 만 이상 4 항목 튜플이 포함되어 있습니다. product직접 출력을 반복하는 것이 훨씬 더 효율적입니다 .

for binlist in itertools.product([0, 1], repeat=n):

이 줄에서 :

joint_s2[nan_set[i]]='+' if binlist[i]=='0' else '-'

문자열binlist[i] 에 대해 테스트 하지만 튜플에는 문자열 아닌 정수 0과 1이 포함되어 있으며 Python은 숫자 문자열을 정수로 또는 그 반대로 자동으로 변환하지 않습니다.'0'binlist

또 다른 수수께끼 섹션은

nr=name.replace('.',' ')
nr_spd=re.split(' ',nr)

왜 정규식을 사용합니까? 내장 된 str.split방법을 사용하지 않는 이유는 무엇입니까?

nr_spd = name.split('.')

OTOH, name필드가 하나 이상의 공백과 최대 단일 점으로 구분 될 수있는 경우 다음을 수행 할 수 있습니다.

nr_spd = name.replace('.', ' ', 1).split()

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Perl이 두 개의 날짜 및 숫자 목록을 비교하는 가장 좋은 방법

분류에서Dev

목록 목록을 한 줄에 하나의 내부 목록으로 문자열로 변환하는 가장 짧은 방법은 무엇입니까?

분류에서Dev

키가 주어진 하위 문자열로 시작하는 목록의 사전으로 문자열 목록을 변환하는 방법

분류에서Dev

파이썬. 문자 및 목록을 "압축"하는 가장 좋은 방법

분류에서Dev

문자열을 2 자 문자열 목록으로 다시 그룹화하는 가장 좋은 방법

분류에서Dev

$ 뒤의 목록 변수 이름을 문자열로 변환하는 방법

분류에서Dev

목록의 문자열을 개별 목록으로 변환하는 방법은 무엇입니까?

분류에서Dev

큰 정수 목록을 C #의 문자열 목록으로 분할하는 가장 빠른 방법

분류에서Dev

특정 문자열을 배열로 변환하는 가장 좋은 방법

분류에서Dev

C의 문자열 목록에서 문자열을 검색하는 가장 좋은 방법

분류에서Dev

Ansible-문자열 목록을 정수 목록으로 변환하는 방법은 무엇입니까?

분류에서Dev

문자열 목록을 정수 목록으로 변환하는 방법은 무엇입니까?

분류에서Dev

파이썬의 csv 파일에 유니 코드 문자열로 두 개의 목록을 저장하는 방법은 무엇입니까?

분류에서Dev

파이썬. 두 문자 안의 단어를 목록으로 변환하는 방법

분류에서Dev

파이썬으로 두 개의 큰 목록 사이의 문자열을 효율적으로 일치시키는 방법은 무엇입니까? (510.000.000 비교)

분류에서Dev

문자열 목록을 매개 변수로 취하고 각 문자열의 길이가 포함 된 목록을 반환하는 함수를 작성합니다.

분류에서Dev

목록을 문자열로 변환하고이 문자열을 다시 초기 목록으로 변환하는 방법은 무엇입니까?

분류에서Dev

목록에서 정수 및 문자열 요소를 두 개의 다른 목록으로 분리하는 방법은 무엇입니까?

분류에서Dev

큰 따옴표 요소가없는 목록의 문자열 표현을 실제 목록으로 변환하는 방법은 무엇입니까?

분류에서Dev

목록에서 가장 많이 발생하는 두 문자열을 찾는 방법은 무엇입니까?

분류에서Dev

Pandas 데이터 프레임을 각 열의 사전 목록으로 변환하는 가장 좋은 방법

분류에서Dev

파이썬은 문자열 목록을 정수 목록으로 변환

분류에서Dev

Javascript 배열의 문자열 목록을 기반으로 객체를 필터링하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

두 문자열 목록의 데카르트 곱을 형성하는 가장 파이썬적인 방법

분류에서Dev

문자열이 포함 된 목록을 정수가 포함 된 목록으로 바꾸는 방법 (Python)

분류에서Dev

문자열 목록을 적절한 문장으로 변환하는 방법

분류에서Dev

키가 날짜이고 값이 파이썬의 문자열 목록 인 사전을 저장하는 가장 좋은 방법

분류에서Dev

함수는 문자열을 반환합니다-목록에 별도의 항목으로 추가하는 방법은 무엇입니까?

분류에서Dev

더 이상 사용되지 않는 문자열 상수에서 'char *'로의 변환을 제거하는 가장 좋은 방법 "

Related 관련 기사

  1. 1

    Perl이 두 개의 날짜 및 숫자 목록을 비교하는 가장 좋은 방법

  2. 2

    목록 목록을 한 줄에 하나의 내부 목록으로 문자열로 변환하는 가장 짧은 방법은 무엇입니까?

  3. 3

    키가 주어진 하위 문자열로 시작하는 목록의 사전으로 문자열 목록을 변환하는 방법

  4. 4

    파이썬. 문자 및 목록을 "압축"하는 가장 좋은 방법

  5. 5

    문자열을 2 자 문자열 목록으로 다시 그룹화하는 가장 좋은 방법

  6. 6

    $ 뒤의 목록 변수 이름을 문자열로 변환하는 방법

  7. 7

    목록의 문자열을 개별 목록으로 변환하는 방법은 무엇입니까?

  8. 8

    큰 정수 목록을 C #의 문자열 목록으로 분할하는 가장 빠른 방법

  9. 9

    특정 문자열을 배열로 변환하는 가장 좋은 방법

  10. 10

    C의 문자열 목록에서 문자열을 검색하는 가장 좋은 방법

  11. 11

    Ansible-문자열 목록을 정수 목록으로 변환하는 방법은 무엇입니까?

  12. 12

    문자열 목록을 정수 목록으로 변환하는 방법은 무엇입니까?

  13. 13

    파이썬의 csv 파일에 유니 코드 문자열로 두 개의 목록을 저장하는 방법은 무엇입니까?

  14. 14

    파이썬. 두 문자 안의 단어를 목록으로 변환하는 방법

  15. 15

    파이썬으로 두 개의 큰 목록 사이의 문자열을 효율적으로 일치시키는 방법은 무엇입니까? (510.000.000 비교)

  16. 16

    문자열 목록을 매개 변수로 취하고 각 문자열의 길이가 포함 된 목록을 반환하는 함수를 작성합니다.

  17. 17

    목록을 문자열로 변환하고이 문자열을 다시 초기 목록으로 변환하는 방법은 무엇입니까?

  18. 18

    목록에서 정수 및 문자열 요소를 두 개의 다른 목록으로 분리하는 방법은 무엇입니까?

  19. 19

    큰 따옴표 요소가없는 목록의 문자열 표현을 실제 목록으로 변환하는 방법은 무엇입니까?

  20. 20

    목록에서 가장 많이 발생하는 두 문자열을 찾는 방법은 무엇입니까?

  21. 21

    Pandas 데이터 프레임을 각 열의 사전 목록으로 변환하는 가장 좋은 방법

  22. 22

    파이썬은 문자열 목록을 정수 목록으로 변환

  23. 23

    Javascript 배열의 문자열 목록을 기반으로 객체를 필터링하는 가장 좋은 방법은 무엇입니까?

  24. 24

    두 문자열 목록의 데카르트 곱을 형성하는 가장 파이썬적인 방법

  25. 25

    문자열이 포함 된 목록을 정수가 포함 된 목록으로 바꾸는 방법 (Python)

  26. 26

    문자열 목록을 적절한 문장으로 변환하는 방법

  27. 27

    키가 날짜이고 값이 파이썬의 문자열 목록 인 사전을 저장하는 가장 좋은 방법

  28. 28

    함수는 문자열을 반환합니다-목록에 별도의 항목으로 추가하는 방법은 무엇입니까?

  29. 29

    더 이상 사용되지 않는 문자열 상수에서 'char *'로의 변환을 제거하는 가장 좋은 방법 "

뜨겁다태그

보관