[Python-de] Re: for unpacking

[email protected] (Stefan Ram) 10 Aug 2024 10:47:07 GMT
Newsgroups gmane.comp.python.general.german
Organization Stefan Ram
Message-ID <[email protected]>
Patrick Rudin <[email protected]> schrieb oder zitierte:
>Stefan Ram wrote:
>>Du meinst vielleicht, daß es keine Aliasse für /Stellen/ von
>>Listen gibt. Was also nicht geht ist:
>>|>>>| a =[ 1, 2, 3 ]
>>|>>>| b = alias_for( a[ 1 ])
>>|>>>| b = 4
>>|>>>| print( a )
>>|   | [1, 4, 3]
>Ja, genau sowas. Für Fälle von unpacking, wo eine  wirklich nur zu 99 
>Prozent lesend verwendet?

  Man kann zwar

a, b, c =[ 1, 2, 3 ]

  schreiben, aber wenn die Liste später verändert wird, dann
  werden diese Veränderungen nicht auf a, b und c übertragen.

>Dem verlinkten Vortrag meine ich zu entnehmen, dass mein Missverständnis 
>gerade in Bezug auf Listen nicht so selten ist...

  Man kann sagen, daß man Namen an Objekte binden kann und Stellen
  von Listen aber /keine/ Objekte sind.

  Was aber gehen würde, wäre

|>>>|list =[ [ 1 ], [ 2 ], [ 3 ]]
|>>>|a, b, c = list
|>>>|b[ 0 ]= 4
|>>>|print( list )
|   |[[1], [4], [3]]

  oder

|>>>|import tkinter
|>>>|tkinter.Tk().withdraw()
|   |''
|>>>|list =[ tkinter.IntVar(value=1), tkinter.IntVar(value=2) ]
|>>>|print( [ l.get() for l in list ])
|   |[1, 2]
|>>>|a, b = list
|>>>|a.set( 4 )
|>>>|print( [ l.get() for l in list ])
|   |[4, 2]

. Es gibt auch Programmiersprachen, in denen Stellen von Listen
  Objekte sind, und daher ein Alias ermöglichen, wie etwa C++.

  Quelltext in C++

#include <array>
#include <iostream>
#include <ostream>

int main() 
{ ::std::array< int, 3 >list{ { 1, 2, 3 }};
  auto & b = list[ 1 ];
  b = 4;
  for( auto & r : list )
  ::std::cout << r << ' '; }

  Ausgabe

1 4 3
_______________________________________________
python-de Mailingliste -- [email protected]
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an [email protected]
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: [email protected]