Найти - Пользователи
Полная версия: Cобрать из двух списков один
Начало » Python для новичков » Cобрать из двух списков один
1 2
ProPall
Нужно составить программу которая будет разделять список L на две части ( не обязательно равные) B и С и обьединять их другой список D , где каждый элемент списка D имеет 50% шанс быть из списка B и 50% шанс быть из списка C.
Я застрял на моменте с 50% на 50%.

 
def shuffle(L):
listlen = int(len(L)/2)
B = L[:listlen]
C = L[listlen:]
D = []
[\code]
Iskatel
ProPall
Что по твоему делает or?
ProPall
Iskatel
ProPallЧто по твоему делает or?
Да, там ошибка. Or - логический оператор который проверяет два операнда. Если хотя бы одно выражение будет истенным , то и выражение будет истенным.
Iskatel
В условии подозрительно отсутствует длина результирующего списка.
И классно ты подредактировал - то хоть был намек что элементы не должны повторяться, а теперь и его нет.
ИМХО делай random.shuffle половинок, а потом выбери половину из B и половину из D и объедини.

ЗЫ. что впринципе будет аналогично тому, что сделать random.shuffle для исходного списка, и выбрать половину… зачем на 2 делить?
ProPall
Iskatel
В условии подозрительно отсутствует длина результирующего списка. И классно ты подредактировал - то хоть был намек что элементы не должны повторяться, а теперь и его нет.ИМХО делай random.shuffle половинок, а потом выбери половину из B и половину из D и объедини.ЗЫ. что впринципе будет аналогично тому, что сделать random.shuffle для исходного списка, и выбрать половину… зачем на 2 делить?
Длина должна быть такая же как и у оригинального списка. То есть фактически код заменяет random.shuffle. Твоя идея с random.shuffle не подходит , ибо тогда каждый элемент результатирующего списка не будет иметь 50 процентый шанс быть из списка B , и 50 процентый шанс быть из списка C.
Iskatel
ProPall
ибо тогда каждый элемент результатирующего списка не будет иметь 50 процентый шанс быть из списка B , и 50 процентый шанс быть из списка C.

Неповеришь…

Но пока не веришь, скажи, почему ты веришь что при shuffle первая половина исходного списка будет встречаться в результате чаще/реже второй и на сколько процентов? ))
ProPall
Iskatel
Если сделать как предлогаешь ты то список будет на половину состоять только из значений из списка B а вторая половина только из значений из списка C. По заданию дано, что КАЖДОЕ значение имеет шанс быть из B или быть из С.
Iskatel
ProPall
Если сделать как предлогаешь ты то список будет на половину состоять только из значений из списка B а вторая половина только из значений из списка C. По заданию дано, что КАЖДОЕ значение имеет шанс быть из B или быть из С.

Ты чтото курил? В твоем сообщении то, что до слова “По” равно тому что после него…

Я тебе скажу, что на сайте есть замечательный раздел “помощь студентам”, там помогают решить задания одаренных преподов.

Раздел для новичков предлагает новичкам понять как решить жизненную задачу.

Надеюсь ты понимаешь, что это разные вещи.

Я не буду тебе рассказывать теорию вероятностей, это нудно, долго, и почитать есть где.
Обьясню “на пальцах”

Подкидываешь монетку - орел/ решка 50/50
Делаешь список из двух значений ‘орел’,'решка', делаешь ему shuffle, выбираешь первое значение - 50/50
Делаешь большой список, делаешь ему shuffle, выбираешь первую половину - 50/50.

Гдето так.

Я тут больше писать не буду, если хочешь докопаться до истины - кури ТерВер.
Если хочешь сделать “так как хочет препод” - ну так про раздел форума я тебе подсказал.

scidam
Предполагается, что выбор осуществляется без возвращения, как только в одном из списков элементы иссякнут, выбор завершается

 import random
p = 0.5   #  Можно поставить другое значение, например 0.3, тогда с вер. 0.3 будет выбор из C и 0.7  из B
C = [1,2,3]
B = [5,6,7,8]
D = []
while C and B:
    if random.random() < p:
         D.append(C.pop())
    else:
         D.append(B.pop())
D.O
scidam
Предполагается, что выбор осуществляется без возвращения, как только в одном из списков элементы иссякнут, выбор завершается
Возникли вопросы
1.Как список L ,разделён на C и B.
2. Как работает в этом случае оператор if
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB