cametan_42 の回答履歴

全560件中1~20件表示
  • 報酬付き

    最大値表示プログラム

    javascriptでwhileを使って、数字をいくつか入力して、最大値を表示するプログラムの作り方を教えてください。

    • mohuri
    • 回答数2
  • pythonで画像のサイズの再計算が関数で可能か

    TkEasyGUIの使い方を試していて画像のサイズの問題で悩んでいます。 フォルダから画像ファイルのリスト化をして循環で表示させるまではどうにかなったのですが残念なことに表示範囲内で自動的に拡大縮小して表示する機能がないようにに見受けられ、サイズはデフォルトでてアスペクト比1:1に変換されて表示されます。画像ファイルによって比率が異なってるため4:3比の場合潰れてしまいます。恥ずかしなが前回の質問時全然そのことに気付きませんでした。今回下記コードのようにPillowを使って画像の大きさを取得しTkEasyGUIの画像のサイズを変更しようとしましたが、画像に合わせ動的に変更をする方が分かりません。画像に合わせ動的にサイズを変えるため関数を使えばと思ったのですが、関数をコピペで使ったことはあっても作ったことはありません。可能か否かも含めて何か方法がありましたらお教えください。 import TkEasyGUI as sg from PIL import Image import glob # GUIフォルダの画像ファイルを抽出 image_data = glob.glob('./GUI/*.png') # .pngのみを抽出 image_data.extend(glob.glob('./GUI/*.jpg')) # .jpgのみを抽出してリストに追加 # 画像のサイズを計算 im = Image.open(image_data[0]) h= im.size[1] w= im.size[0] h1=400 w1= int(w/(h/h1)) #sg.theme('alt') layout = [ [sg.Image(im,key="-image-",size=(w1,h1))], [sg.Button("◀"),sg.Button("□"),sg.Button("▶")] ] window = sg.Window('画像', layout) # イベントループ i=0 while True: event, values = window.read() if event == sg.WIN_CLOSED: break if event == "▶": i += 1 window["-image-"].update(image_data[i % len(image_data)]) elif event == "◀": i -= 1 window["-image-"].update(image_data[i % len(image_data)]) elif event == "□": i = 0 window["-image-"].update(image_data[i % len(image_data)]) window.close() なおDisvordで質問を試みていますが見学者が居ないのかどうか分かりませんが寂し状況に陥っていますので此処ではPillowを使った方法を考えて投稿させていただきました。

    • turu575
    • 回答数6
  • pythonで画像のサイズの再計算が関数で可能か

    TkEasyGUIの使い方を試していて画像のサイズの問題で悩んでいます。 フォルダから画像ファイルのリスト化をして循環で表示させるまではどうにかなったのですが残念なことに表示範囲内で自動的に拡大縮小して表示する機能がないようにに見受けられ、サイズはデフォルトでてアスペクト比1:1に変換されて表示されます。画像ファイルによって比率が異なってるため4:3比の場合潰れてしまいます。恥ずかしなが前回の質問時全然そのことに気付きませんでした。今回下記コードのようにPillowを使って画像の大きさを取得しTkEasyGUIの画像のサイズを変更しようとしましたが、画像に合わせ動的に変更をする方が分かりません。画像に合わせ動的にサイズを変えるため関数を使えばと思ったのですが、関数をコピペで使ったことはあっても作ったことはありません。可能か否かも含めて何か方法がありましたらお教えください。 import TkEasyGUI as sg from PIL import Image import glob # GUIフォルダの画像ファイルを抽出 image_data = glob.glob('./GUI/*.png') # .pngのみを抽出 image_data.extend(glob.glob('./GUI/*.jpg')) # .jpgのみを抽出してリストに追加 # 画像のサイズを計算 im = Image.open(image_data[0]) h= im.size[1] w= im.size[0] h1=400 w1= int(w/(h/h1)) #sg.theme('alt') layout = [ [sg.Image(im,key="-image-",size=(w1,h1))], [sg.Button("◀"),sg.Button("□"),sg.Button("▶")] ] window = sg.Window('画像', layout) # イベントループ i=0 while True: event, values = window.read() if event == sg.WIN_CLOSED: break if event == "▶": i += 1 window["-image-"].update(image_data[i % len(image_data)]) elif event == "◀": i -= 1 window["-image-"].update(image_data[i % len(image_data)]) elif event == "□": i = 0 window["-image-"].update(image_data[i % len(image_data)]) window.close() なおDisvordで質問を試みていますが見学者が居ないのかどうか分かりませんが寂し状況に陥っていますので此処ではPillowを使った方法を考えて投稿させていただきました。

    • turu575
    • 回答数6
  • pythonで画像のサイズの再計算が関数で可能か

    TkEasyGUIの使い方を試していて画像のサイズの問題で悩んでいます。 フォルダから画像ファイルのリスト化をして循環で表示させるまではどうにかなったのですが残念なことに表示範囲内で自動的に拡大縮小して表示する機能がないようにに見受けられ、サイズはデフォルトでてアスペクト比1:1に変換されて表示されます。画像ファイルによって比率が異なってるため4:3比の場合潰れてしまいます。恥ずかしなが前回の質問時全然そのことに気付きませんでした。今回下記コードのようにPillowを使って画像の大きさを取得しTkEasyGUIの画像のサイズを変更しようとしましたが、画像に合わせ動的に変更をする方が分かりません。画像に合わせ動的にサイズを変えるため関数を使えばと思ったのですが、関数をコピペで使ったことはあっても作ったことはありません。可能か否かも含めて何か方法がありましたらお教えください。 import TkEasyGUI as sg from PIL import Image import glob # GUIフォルダの画像ファイルを抽出 image_data = glob.glob('./GUI/*.png') # .pngのみを抽出 image_data.extend(glob.glob('./GUI/*.jpg')) # .jpgのみを抽出してリストに追加 # 画像のサイズを計算 im = Image.open(image_data[0]) h= im.size[1] w= im.size[0] h1=400 w1= int(w/(h/h1)) #sg.theme('alt') layout = [ [sg.Image(im,key="-image-",size=(w1,h1))], [sg.Button("◀"),sg.Button("□"),sg.Button("▶")] ] window = sg.Window('画像', layout) # イベントループ i=0 while True: event, values = window.read() if event == sg.WIN_CLOSED: break if event == "▶": i += 1 window["-image-"].update(image_data[i % len(image_data)]) elif event == "◀": i -= 1 window["-image-"].update(image_data[i % len(image_data)]) elif event == "□": i = 0 window["-image-"].update(image_data[i % len(image_data)]) window.close() なおDisvordで質問を試みていますが見学者が居ないのかどうか分かりませんが寂し状況に陥っていますので此処ではPillowを使った方法を考えて投稿させていただきました。

    • turu575
    • 回答数6
  • pythonで画像のサイズの再計算が関数で可能か

    TkEasyGUIの使い方を試していて画像のサイズの問題で悩んでいます。 フォルダから画像ファイルのリスト化をして循環で表示させるまではどうにかなったのですが残念なことに表示範囲内で自動的に拡大縮小して表示する機能がないようにに見受けられ、サイズはデフォルトでてアスペクト比1:1に変換されて表示されます。画像ファイルによって比率が異なってるため4:3比の場合潰れてしまいます。恥ずかしなが前回の質問時全然そのことに気付きませんでした。今回下記コードのようにPillowを使って画像の大きさを取得しTkEasyGUIの画像のサイズを変更しようとしましたが、画像に合わせ動的に変更をする方が分かりません。画像に合わせ動的にサイズを変えるため関数を使えばと思ったのですが、関数をコピペで使ったことはあっても作ったことはありません。可能か否かも含めて何か方法がありましたらお教えください。 import TkEasyGUI as sg from PIL import Image import glob # GUIフォルダの画像ファイルを抽出 image_data = glob.glob('./GUI/*.png') # .pngのみを抽出 image_data.extend(glob.glob('./GUI/*.jpg')) # .jpgのみを抽出してリストに追加 # 画像のサイズを計算 im = Image.open(image_data[0]) h= im.size[1] w= im.size[0] h1=400 w1= int(w/(h/h1)) #sg.theme('alt') layout = [ [sg.Image(im,key="-image-",size=(w1,h1))], [sg.Button("◀"),sg.Button("□"),sg.Button("▶")] ] window = sg.Window('画像', layout) # イベントループ i=0 while True: event, values = window.read() if event == sg.WIN_CLOSED: break if event == "▶": i += 1 window["-image-"].update(image_data[i % len(image_data)]) elif event == "◀": i -= 1 window["-image-"].update(image_data[i % len(image_data)]) elif event == "□": i = 0 window["-image-"].update(image_data[i % len(image_data)]) window.close() なおDisvordで質問を試みていますが見学者が居ないのかどうか分かりませんが寂し状況に陥っていますので此処ではPillowを使った方法を考えて投稿させていただきました。

    • turu575
    • 回答数6
  • pythonで画像のサイズの再計算が関数で可能か

    TkEasyGUIの使い方を試していて画像のサイズの問題で悩んでいます。 フォルダから画像ファイルのリスト化をして循環で表示させるまではどうにかなったのですが残念なことに表示範囲内で自動的に拡大縮小して表示する機能がないようにに見受けられ、サイズはデフォルトでてアスペクト比1:1に変換されて表示されます。画像ファイルによって比率が異なってるため4:3比の場合潰れてしまいます。恥ずかしなが前回の質問時全然そのことに気付きませんでした。今回下記コードのようにPillowを使って画像の大きさを取得しTkEasyGUIの画像のサイズを変更しようとしましたが、画像に合わせ動的に変更をする方が分かりません。画像に合わせ動的にサイズを変えるため関数を使えばと思ったのですが、関数をコピペで使ったことはあっても作ったことはありません。可能か否かも含めて何か方法がありましたらお教えください。 import TkEasyGUI as sg from PIL import Image import glob # GUIフォルダの画像ファイルを抽出 image_data = glob.glob('./GUI/*.png') # .pngのみを抽出 image_data.extend(glob.glob('./GUI/*.jpg')) # .jpgのみを抽出してリストに追加 # 画像のサイズを計算 im = Image.open(image_data[0]) h= im.size[1] w= im.size[0] h1=400 w1= int(w/(h/h1)) #sg.theme('alt') layout = [ [sg.Image(im,key="-image-",size=(w1,h1))], [sg.Button("◀"),sg.Button("□"),sg.Button("▶")] ] window = sg.Window('画像', layout) # イベントループ i=0 while True: event, values = window.read() if event == sg.WIN_CLOSED: break if event == "▶": i += 1 window["-image-"].update(image_data[i % len(image_data)]) elif event == "◀": i -= 1 window["-image-"].update(image_data[i % len(image_data)]) elif event == "□": i = 0 window["-image-"].update(image_data[i % len(image_data)]) window.close() なおDisvordで質問を試みていますが見学者が居ないのかどうか分かりませんが寂し状況に陥っていますので此処ではPillowを使った方法を考えて投稿させていただきました。

    • turu575
    • 回答数6
  • C言語について

    この3つのプログラムを作成してください。

    • meimo
    • 回答数1
  • pythonでelifが多数の時の対処方法について

    お世話になっています。 pythonのTkEasyGUIを使い画像表示の方法を試しています。下記の簡単なコードではボタンクリックで画像が順に変わるだけのものですが、同じボタンで処理したいためelifを使い条件分岐をさせて変えるようにしていますが、今回の場合のように3枚程度の画像の場合問題がないのですが、これでは枚数が増える都度コードを追加することになります。インデックス部分の処理だけで変化させることは出来ないでしょうか。 import TkEasyGUI as sg image_data =['GUI/frog2.png','GUI/a.jpg','GUI/b.jpg'] sg.theme('alt') layout = [ [sg.Image(image_data[0],key="-image-")], [sg.Button("image1")] ] window = sg.Window('画像', layout=layout) i=0 # イベントループ while True: event, values = window.read() if event == sg.WIN_CLOSED: break if event == "image1" and i==0: i=i + 1 window["-image-"].update(image_data[i]) elif event == "image1" and i==1: i=i + 1 window["-image-"].update(image_data[i]) elif event == "image1" and i==2: i=i - 2 window["-image-"].update(image_data[i]) window.close() 今回、Discord > TkEasyGUIへ投稿しようとも考えてアカウントの登録までしましたがスマホも使えない年寄りはそこで固まってしまいました。TkEasyGUI特有の問題かpythonの一般問題かどうか分かりませんがよろしくお願いいたします。

    • turu575
    • 回答数3
  • pythonのmathモジュールについて

    pythonのnumpyモジュールとTkEasyGUIで最小公倍数と最大公約数を求めるコードをGUIの勉強で下記のように書いてみました。最小公倍数と最大公約数の他に公約数の列挙を加えたいと思いmathモジュールのコードに行き着つきました。もともとmathモジュールではarray部分の置換え方が上手く行かなかったのでnumpyで求めるようにしていたのですが、mathに切り替えて使えるようにしたいともいますので方法についてご教授宜しきお願いいたします。 #numpyモジュールとTkEasyGUIで最小公倍数と最大公約数を求める import numpy as np import TkEasyGUI as eg # 画面レイアウトを定義 layout=[ [eg.Label('最小公倍数と最大公約数',color='red',font=("Meiryo",11,'bold'))], [eg.Text("数値を入力してください。",font=("Meiryo",10))], [eg.Input("", key="Input1"),eg.Input("", key="Input2"),eg.Input("", key="Input3"),eg.Input("", key="Input4")], [eg.Button("最小公倍数",background_color="#fff001"),eg.Button("最大公約数"),eg.Button("クリア",pad=(30,5)),eg.Button("キャンセル",background_color="pink")], [eg.Multiline("", key="result",font=("Meiryo",10),size=(40,2))], ] # ウィンドウを表示 with eg.Window("test", layout) as window: for event, values in window.event_iter(): if event == eg.WINDOW_CLOSED or event == "キャンセル": break if event == "最小公倍数" or event == "最大公約数": if values["Input1"] == "" or values["Input2"] == "": array = [0,0] elif values["Input3"] == "" and values["Input4"] == "": array= [int(values["Input1"]),int(values["Input2"])] elif values["Input4"] == "" : array= [int(values["Input1"]),int(values["Input2"]),int(values["Input3"])] else: array = [int(values["Input1"]),int(values["Input2"]),int(values["Input3"]),int(values["Input4"])] if event == "最小公倍数": lcd = np.lcm.reduce(array) window["result"].update(f"最小公倍数は:{lcd}です。") elif event == "最大公約数": max = np.gcd.reduce(array) window["result"].update(f"最大公約数は:{max}です。") if event == "クリア": window["Input1"].update("") window["Input2"].update("") window["Input3"].update("") window["Input4"].update("") window["result"].update("") window.close() #公約数の列挙 def divisors(n): lower_divisors, upper_divisors = [], [] i = 1 while i * i <= n: if n % i == 0: lower_divisors.append(i) if i != n // i: upper_divisors.append(n // i) i += 1 return lower_divisors + upper_divisors[::-1] import math print(divisors(math.gcd(330, 726, 1155, 957)))

    • turu575
    • 回答数2
  • pythonのmathモジュールについて

    pythonのnumpyモジュールとTkEasyGUIで最小公倍数と最大公約数を求めるコードをGUIの勉強で下記のように書いてみました。最小公倍数と最大公約数の他に公約数の列挙を加えたいと思いmathモジュールのコードに行き着つきました。もともとmathモジュールではarray部分の置換え方が上手く行かなかったのでnumpyで求めるようにしていたのですが、mathに切り替えて使えるようにしたいともいますので方法についてご教授宜しきお願いいたします。 #numpyモジュールとTkEasyGUIで最小公倍数と最大公約数を求める import numpy as np import TkEasyGUI as eg # 画面レイアウトを定義 layout=[ [eg.Label('最小公倍数と最大公約数',color='red',font=("Meiryo",11,'bold'))], [eg.Text("数値を入力してください。",font=("Meiryo",10))], [eg.Input("", key="Input1"),eg.Input("", key="Input2"),eg.Input("", key="Input3"),eg.Input("", key="Input4")], [eg.Button("最小公倍数",background_color="#fff001"),eg.Button("最大公約数"),eg.Button("クリア",pad=(30,5)),eg.Button("キャンセル",background_color="pink")], [eg.Multiline("", key="result",font=("Meiryo",10),size=(40,2))], ] # ウィンドウを表示 with eg.Window("test", layout) as window: for event, values in window.event_iter(): if event == eg.WINDOW_CLOSED or event == "キャンセル": break if event == "最小公倍数" or event == "最大公約数": if values["Input1"] == "" or values["Input2"] == "": array = [0,0] elif values["Input3"] == "" and values["Input4"] == "": array= [int(values["Input1"]),int(values["Input2"])] elif values["Input4"] == "" : array= [int(values["Input1"]),int(values["Input2"]),int(values["Input3"])] else: array = [int(values["Input1"]),int(values["Input2"]),int(values["Input3"]),int(values["Input4"])] if event == "最小公倍数": lcd = np.lcm.reduce(array) window["result"].update(f"最小公倍数は:{lcd}です。") elif event == "最大公約数": max = np.gcd.reduce(array) window["result"].update(f"最大公約数は:{max}です。") if event == "クリア": window["Input1"].update("") window["Input2"].update("") window["Input3"].update("") window["Input4"].update("") window["result"].update("") window.close() #公約数の列挙 def divisors(n): lower_divisors, upper_divisors = [], [] i = 1 while i * i <= n: if n % i == 0: lower_divisors.append(i) if i != n // i: upper_divisors.append(n // i) i += 1 return lower_divisors + upper_divisors[::-1] import math print(divisors(math.gcd(330, 726, 1155, 957)))

    • turu575
    • 回答数2
  • JAVAを勉強しています。

    JAVAを勉強しています。C#はできますが、Pleiadesの使い方が分からなかったり、バージョンの違いだったり、まったくできません。 JAVAを勉強するサイトを教えてください。オブジェクト指向は分かっています。よろしくお願いします。

    • ベストアンサー
    • Java
    • noname#262380
    • 回答数1
  • Python:浅いコピーと深いコピー

    (1) rgba = rgb(代入)は浅いコピー(参照渡し)、 rgba = rgb.copy()(コピーメソッド)と rgba = rgb[:](スライス代入?)は深いコピー(値渡し)と理解してよいのでしょうか? copy()(コピーメソッド)は浅いコピーと書いてあります。 https://atmarkit.itmedia.co.jp/ait/articles/1906/04/news009_4.html#shallowcopy (2)上記リンクに「intlist1[0]へ代入をすれば、名札の付け替えが行われる」とありますが、rgb.append("Alph")、rgb[-1]="Alpha"、rgba.append("Alph")、rgba[-1] = "Alpha"のどれをやってもid変わりません。 上記2点ってPythonの仕様変更ですか? コード(Google colabo) rgb = ["Red"] # ["Red", "Green", "Blue"] print('\n', 'rgba = rgb') rgba = rgb print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb.append("Alph")') rgb.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb[-1]="Alpha")') rgb[-1]="Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba.append("Alph")') rgba.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba[-1] = "Alpha"') rgba[-1] = "Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba = rgb.copy()') rgba = rgb.copy() print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba = rgb[:]') rgba = rgb[:] print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb.append("Alph")') rgb.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb[-1]="Alpha")') rgb[-1]="Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba.append("Alph")') rgba.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba[-1] = "Alpha"') rgba[-1] = "Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) 実行結果 rgba = rgb ['Red'] ['Red'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgb.append("Alph") ['Red', 'Alph'] ['Red', 'Alph'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgb[-1]="Alpha") ['Red', 'Alpha'] ['Red', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgba.append("Alph") ['Red', 'Alpha', 'Alph'] ['Red', 'Alpha', 'Alph'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgba[-1] = "Alpha" ['Red', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgba = rgb.copy() ['Red', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358069184 rgba = rgb[:] ['Red', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgb.append("Alph") ['Red', 'Alpha', 'Alpha', 'Alph'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgb[-1]="Alpha") ['Red', 'Alpha', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgba.append("Alph") ['Red', 'Alpha', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha', 'Alph'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgba[-1] = "Alpha" ['Red', 'Alpha', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688

  • Python:浅いコピーと深いコピー

    (1) rgba = rgb(代入)は浅いコピー(参照渡し)、 rgba = rgb.copy()(コピーメソッド)と rgba = rgb[:](スライス代入?)は深いコピー(値渡し)と理解してよいのでしょうか? copy()(コピーメソッド)は浅いコピーと書いてあります。 https://atmarkit.itmedia.co.jp/ait/articles/1906/04/news009_4.html#shallowcopy (2)上記リンクに「intlist1[0]へ代入をすれば、名札の付け替えが行われる」とありますが、rgb.append("Alph")、rgb[-1]="Alpha"、rgba.append("Alph")、rgba[-1] = "Alpha"のどれをやってもid変わりません。 上記2点ってPythonの仕様変更ですか? コード(Google colabo) rgb = ["Red"] # ["Red", "Green", "Blue"] print('\n', 'rgba = rgb') rgba = rgb print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb.append("Alph")') rgb.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb[-1]="Alpha")') rgb[-1]="Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba.append("Alph")') rgba.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba[-1] = "Alpha"') rgba[-1] = "Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba = rgb.copy()') rgba = rgb.copy() print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba = rgb[:]') rgba = rgb[:] print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb.append("Alph")') rgb.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb[-1]="Alpha")') rgb[-1]="Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba.append("Alph")') rgba.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba[-1] = "Alpha"') rgba[-1] = "Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) 実行結果 rgba = rgb ['Red'] ['Red'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgb.append("Alph") ['Red', 'Alph'] ['Red', 'Alph'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgb[-1]="Alpha") ['Red', 'Alpha'] ['Red', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgba.append("Alph") ['Red', 'Alpha', 'Alph'] ['Red', 'Alpha', 'Alph'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgba[-1] = "Alpha" ['Red', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgba = rgb.copy() ['Red', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358069184 rgba = rgb[:] ['Red', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgb.append("Alph") ['Red', 'Alpha', 'Alpha', 'Alph'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgb[-1]="Alpha") ['Red', 'Alpha', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgba.append("Alph") ['Red', 'Alpha', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha', 'Alph'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgba[-1] = "Alpha" ['Red', 'Alpha', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688

  • Python:浅いコピーと深いコピー

    (1) rgba = rgb(代入)は浅いコピー(参照渡し)、 rgba = rgb.copy()(コピーメソッド)と rgba = rgb[:](スライス代入?)は深いコピー(値渡し)と理解してよいのでしょうか? copy()(コピーメソッド)は浅いコピーと書いてあります。 https://atmarkit.itmedia.co.jp/ait/articles/1906/04/news009_4.html#shallowcopy (2)上記リンクに「intlist1[0]へ代入をすれば、名札の付け替えが行われる」とありますが、rgb.append("Alph")、rgb[-1]="Alpha"、rgba.append("Alph")、rgba[-1] = "Alpha"のどれをやってもid変わりません。 上記2点ってPythonの仕様変更ですか? コード(Google colabo) rgb = ["Red"] # ["Red", "Green", "Blue"] print('\n', 'rgba = rgb') rgba = rgb print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb.append("Alph")') rgb.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb[-1]="Alpha")') rgb[-1]="Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba.append("Alph")') rgba.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba[-1] = "Alpha"') rgba[-1] = "Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba = rgb.copy()') rgba = rgb.copy() print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba = rgb[:]') rgba = rgb[:] print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb.append("Alph")') rgb.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb[-1]="Alpha")') rgb[-1]="Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba.append("Alph")') rgba.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba[-1] = "Alpha"') rgba[-1] = "Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) 実行結果 rgba = rgb ['Red'] ['Red'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgb.append("Alph") ['Red', 'Alph'] ['Red', 'Alph'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgb[-1]="Alpha") ['Red', 'Alpha'] ['Red', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgba.append("Alph") ['Red', 'Alpha', 'Alph'] ['Red', 'Alpha', 'Alph'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgba[-1] = "Alpha" ['Red', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgba = rgb.copy() ['Red', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358069184 rgba = rgb[:] ['Red', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgb.append("Alph") ['Red', 'Alpha', 'Alpha', 'Alph'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgb[-1]="Alpha") ['Red', 'Alpha', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgba.append("Alph") ['Red', 'Alpha', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha', 'Alph'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgba[-1] = "Alpha" ['Red', 'Alpha', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688

  • Python:浅いコピーと深いコピー

    (1) rgba = rgb(代入)は浅いコピー(参照渡し)、 rgba = rgb.copy()(コピーメソッド)と rgba = rgb[:](スライス代入?)は深いコピー(値渡し)と理解してよいのでしょうか? copy()(コピーメソッド)は浅いコピーと書いてあります。 https://atmarkit.itmedia.co.jp/ait/articles/1906/04/news009_4.html#shallowcopy (2)上記リンクに「intlist1[0]へ代入をすれば、名札の付け替えが行われる」とありますが、rgb.append("Alph")、rgb[-1]="Alpha"、rgba.append("Alph")、rgba[-1] = "Alpha"のどれをやってもid変わりません。 上記2点ってPythonの仕様変更ですか? コード(Google colabo) rgb = ["Red"] # ["Red", "Green", "Blue"] print('\n', 'rgba = rgb') rgba = rgb print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb.append("Alph")') rgb.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb[-1]="Alpha")') rgb[-1]="Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba.append("Alph")') rgba.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba[-1] = "Alpha"') rgba[-1] = "Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba = rgb.copy()') rgba = rgb.copy() print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba = rgb[:]') rgba = rgb[:] print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb.append("Alph")') rgb.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgb[-1]="Alpha")') rgb[-1]="Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba.append("Alph")') rgba.append("Alph") print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) print('\n', 'rgba[-1] = "Alpha"') rgba[-1] = "Alpha" print(rgb, rgba) print('id(rgb)', id(rgb), 'id(rgba)', id(rgba)) 実行結果 rgba = rgb ['Red'] ['Red'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgb.append("Alph") ['Red', 'Alph'] ['Red', 'Alph'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgb[-1]="Alpha") ['Red', 'Alpha'] ['Red', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgba.append("Alph") ['Red', 'Alpha', 'Alph'] ['Red', 'Alpha', 'Alph'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgba[-1] = "Alpha" ['Red', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135952212587840 rgba = rgb.copy() ['Red', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358069184 rgba = rgb[:] ['Red', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgb.append("Alph") ['Red', 'Alpha', 'Alpha', 'Alph'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgb[-1]="Alpha") ['Red', 'Alpha', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgba.append("Alph") ['Red', 'Alpha', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha', 'Alph'] id(rgb) 135952212587840 id(rgba) 135951358898688 rgba[-1] = "Alpha" ['Red', 'Alpha', 'Alpha', 'Alpha'] ['Red', 'Alpha', 'Alpha', 'Alpha'] id(rgb) 135952212587840 id(rgba) 135951358898688

  • Pythonの上達法

    Pythonのドキュメントが読みなせるようになりたいです。 https://docs.python.org/3.11/index.html とりあえず下記の本やサイトは一通り読みました。あとはどんな本やサイトを読んでいけばいいですか? おすすめのものを教えてください。 Python入門 https://atmarkit.itmedia.co.jp/ait/subtop/features/di/pybasic_index.html わかるPython https://www.sbcr.jp/product/4797395440/

  • Pythonの上達法

    Pythonのドキュメントが読みなせるようになりたいです。 https://docs.python.org/3.11/index.html とりあえず下記の本やサイトは一通り読みました。あとはどんな本やサイトを読んでいけばいいですか? おすすめのものを教えてください。 Python入門 https://atmarkit.itmedia.co.jp/ait/subtop/features/di/pybasic_index.html わかるPython https://www.sbcr.jp/product/4797395440/

  • Pythonの上達法

    Pythonのドキュメントが読みなせるようになりたいです。 https://docs.python.org/3.11/index.html とりあえず下記の本やサイトは一通り読みました。あとはどんな本やサイトを読んでいけばいいですか? おすすめのものを教えてください。 Python入門 https://atmarkit.itmedia.co.jp/ait/subtop/features/di/pybasic_index.html わかるPython https://www.sbcr.jp/product/4797395440/

  • Pythonをやる為にVS Code

    を入れたのですが、pythonファイルをダブルクリックしても一瞬コマンドプロンプトが出るだけでVS Codeが起動しません。 とあるサイトでVS Codeはシングルクリックがデフォルトで、ダブルクリックで開けるように設定するやり方を発見してやってみましたが結果は変わらずでした。原因は何でしょうか?

  • Pythonの上達法

    Pythonのドキュメントが読みなせるようになりたいです。 https://docs.python.org/3.11/index.html とりあえず下記の本やサイトは一通り読みました。あとはどんな本やサイトを読んでいけばいいですか? おすすめのものを教えてください。 Python入門 https://atmarkit.itmedia.co.jp/ait/subtop/features/di/pybasic_index.html わかるPython https://www.sbcr.jp/product/4797395440/