実現したいこと
ぱっと見では、
あり得ないだろうかも 知れない、
もしかしたら Python開発者しか、
対処不可能かも 知れない、
挙動不振を 何とかしたい。
_
前提
・pythonで 配列データを、
_スライスして 再結合する、
_コーディングを しました。
_
環境、
ウィンドウズ11 22H2
Powershell 7.3.3
python 3.11×64bit Microsoft配布版
Visual Studio Code 1.76.1
_
発生している問題・エラーメッセージ
※注:エラーメッセージは ありません。
・配列データが 確率的に、
_一部 欠損します、
_失われたり、失われなかったり、
_します。
・コード初見時 100%、
_誰もが 嘘を、
_疑うでしょう。
_
該当のソースコード
Python iround.py(参照受けルーチン。)
1import numpy as LAC 2 3def iround(lis: list, dimensyon: int = 0, istypeint: bool = True): 4 temp = (LAC.asarray(LAC.asarray((LAC.fabs((I := LAC.array(lis))) * (dimtemp := 10 ** 5 (0 - dimensyon + 1)) + 5) / 10, dtype=int), dtype=float) * LAC.sign(I)) / dimtemp * 10 6 return LAC.asarray(temp, dtype=int) if (dimensyon > -1) and istypeint else temp
Python リスト操作。
1# coding: UTF-8 2# python3.11 3 4from logging import StreamHandler, FileHandler, getLogger, DEBUG, INFO, ERROR, Formatter, WARNING, CRITICAL 5import pytest 6import traceback as TB 7import functools as FT 8import itertools as IT 9import math as MT 10import random as RA 11import numpy as LAC # List Array Control. 12import tqdm as PGR # Progress rate. 13from iround import iround 14import sys 15 16 17# Backtrace define section. 18ERRORformatter = Formatter( 19 " Alert I I %(levelname)s %(message)s %(asctime)s %(filename)s") 20formatter = Formatter( 21 "[%(levelname)s] %(asctime)s - %(message)s (%(filename)s)") 22logger = getLogger(__name__) 23 24nomalhandler = FileHandler("DEBUG.log") 25nomalhandler.setLevel(DEBUG) 26nomalhandler.setFormatter(formatter) 27 28WARNINGhandler = FileHandler("WARNING.log") 29WARNINGhandler.setLevel(WARNING) 30WARNINGhandler.setFormatter(formatter) 31 32terminalhandler = StreamHandler() 33terminalhandler.setLevel(ERROR) 34terminalhandler.setFormatter(ERRORformatter) 35 36logger.setLevel(DEBUG) 37logger.addHandler(nomalhandler) 38logger.addHandler(WARNINGhandler) 39logger.addHandler(terminalhandler) 40 41 42# Data definition section. 43recursionlimit = sys.getrecursionlimit() 44DisDataanomal = 0 45E_Recursivecount = 0 46Recursivemount = 3 47C_Recursivecount = 0 48C_Dataanomaly = 0 49P_Dataanomaly = 0 50 51# Unique random number routine. 52# Center-biased random number. 53def Cran(end: int, start: int = 1, Centralization: int = 3): 54 return iround([LAC.average(LAC.random.randint(start, end + 1, Centralization))])[0] 55# Combining Shuffle routine. 56 57 58def list_action(action_times: int = 3, Orderlist: list = list(range(1, 55 + 1))): 59 try: 60 assert isinstance(Orderlist, (LAC.ndarray, list)) and not (isinstance( 61 Orderlist[0], (LAC.ndarray, list))) 62 except AssertionError: 63 logger.debug(TB.format_exc) 64 Orderlistlen = len(Orderlist) 65 Spare_Orderlist = Orderlist 66 67# Random biased on one side. 68 def Eran2(end: int, start: int = 1): 69 temporary1 = RA.randint(start, min(end, 4 + start) + 1) 70 try: 71 assert temporary1 >= start 72 except AssertionError: 73 logger.debug(TB.format_exc) 74 logger.debug( 75 f"Eran ŗ l ُ픭 temporary1 = {temporary1}") 76 return Eran2(end) 77 except RecursionError: 78# E_Recursivecount += 1 79 logger.warning(TB.format_exc) 80 logger.warning( 81 f"Eran ōċA Ăяo {Recursivemount} ₵ ܂ ") 82 sys.setrecursionlimit( 83 sys.getrecursionlimit() + Recursivemount) 84 except MemoryError: 85 logger.error(TB.format_exc) 86 raise MemoryError 87 return temporary1 88 89# Overlap and integrate - routine. 90 def Merements(target: list, removalside: list): 91 temp1 = len(removalside) 92 if temp1 < 3: 93 target = removalside + target 94 removalside = [] 95 else: 96 temp2 = -Eran2(temp1) 97 target = removalside[len( 98 removalside) + temp2: len(removalside)] + target 99 removalside = removalside[: temp2] 100 return target, removalside 101 102 for J in range(action_times): 103 temp1 = Cran(len(Orderlist), Centralization=15) 104 temporary1 = Orderlist[:temp1] 105 temporary2 = Orderlist[temp1:] 106 temporary3 = [] 107 while (len(temporary1) > 0) and (len(temporary2) > 0): 108 temporary3, temporary1 = Merements(temporary3, temporary1) 109 temporary3, temporary2 = Merements(temporary3, temporary2) 110 Orderlist = temporary1 + temporary2 + temporary3 111 try: 112 assert Orderlistlen == len(Orderlist) 113 except AssertionError: 114 logger.warning(TB.format_exc) 115 logger.warning( 116 f"list_action Ńf [ ^ ُ픭 Orderlistlen = {len(Orderlist)}") 117 Orderlist = list_action(Orderlist=Spare_Orderlist) 118 except RecursionError: 119 logger.warning(TB.format_exc) 120 logger.warning( 121 f"list_action ōċA Ăяo {Recursivemount} ₵ ܂ ") 122 sys.setrecursionlimit( 123 sys.getrecursionlimit() + Recursivemount) 124 except MemoryError: 125 logger.error(TB.format_exc) 126 raise MemoryError 127 return Orderlist 128 129 130# Durability test routine. 131def Durabilitytest(plactics: int): 132 l = 0 133 for j in PGR.tqdm(range(plactics)): 134 l += (len(list_action()) != 55) + 0 135 print(f"{l} {l / plactics * 100}%") 136 137 138# main 139Durabilitytest(10 ** 7)
試したこと
データ欠損異常が、
以下の 範囲で、
集中して 発生している事を、
突き止めました。
def Merements(target: list, removalside: list): temp1 = len(removalside) if temp1 < 3: target = removalside + target removalside = [] else: temp2 = -Eran2(temp1) target = removalside[len( removalside) + temp2: len(removalside)] + target removalside = removalside[: temp2] return target, removalside for J in range(action_times): temp1 = Cran(len(Orderlist), Centralization=15) temporary1 = Orderlist[:temp1] temporary2 = Orderlist[temp1:] temporary3 = [] while (len(temporary1) > 0) and (len(temporary2) > 0): temporary3, temporary1 = Merements(temporary3, temporary1) temporary3, temporary2 = Merements(temporary3, temporary2) Orderlist = temporary1 + temporary2 + temporary3
しかし、
Merementsルーチン内で、
異常は 発生しませんでした。
_
詰り、
以下の 範囲内で、
データ欠損異常が 発生しているものと、
思われます。
for J in range(action_times): temp1 = Cran(len(Orderlist), Centralization=15) temporary1 = Orderlist[:temp1] temporary2 = Orderlist[temp1:] temporary3 = [] while (len(temporary1) > 0) and (len(temporary2) > 0): 処理、 Orderlist = temporary1 + temporary2 + temporary3
_
流石に、
此は 初任者では、
どうこうできる レベルを、
超えてそうな 気が、
しています、
ご教示を お願いします。
_
補足情報
実行すると、
大量の Warningを、
ファイルに 吐き出し始めます、
お気をつけを。
追記
なんだか、
酷い 虚実な、
誹り、誹謗中傷、悪態を、
つけられてますので、
どっちが 聞く、
耳を 持たないのか、
どっちが 迷惑行為を、
仕掛けているのか、
検証Coding提示によって、
明らかにしたいと 思います。
_
是非、
お手元で 検証を、
頂き、
原因究明に お役立て、
頂ければ 幸いです。
_
尚、
当然ですが 当該環境では、
ok以外の 結果は、
詰まり データ欠損は、
存在しませんでした。
_
Merementsルーチンは、
無問題である旨、
示したにも 関わらず、
他者の 仕業を、
軽軽しく 踏みにじり、
_
おまけに、
冒涜の限りを、
尽くす 姿勢には、
誰であろうと 看過できない、
事でしょう。
_
Merements検証ルーチン。
Python3.11.1
1j = 0 2k = 0 3Eran2 = lambda X: j 4def test(func): 5 pass 6 def wrap(*args, **kwargs): 7 a = [1, 2, 3, 4, 5, 6, 7] 8 master = [] 9 global k, j 10 for i in a: 11 master.append(a) 12 applicable = master 13 for j in range(-1, -7, -1): 14 temp1, temp2 = func([], applicable) 15 k += 0 if len(master) == len(temp1) + len(temp2) else 1 16 return 17 return wrap 18 19@test 20def Merements(target: list, removalside: list): 21 temp1 = len(removalside) 22 if temp1 < 3: 23 target = removalside + target 24 removalside = [] 25 else: 26 temp2 = -1 * Eran2(temp1) 27 target = removalside[len(removalside) + 28 temp2: len(removalside)] + target 29 removalside = removalside[: temp2] 30 return target, removalside 31 32print(str(k) if Merements([], []) else "ok")

回答3件
あなたの回答
tips
プレビュー