Vodoravna črta je zaprta ukrivljena črta, katere vse točke imajo enako višino nad površino, vzeto za začetno. V kakšnih okoliščinah imajo enake vrstice isti sklic? Enako imajo

Iskal sem po spletu in iskal med vprašanji, vendar nisem našel odgovora na to vprašanje. Moje opažanje je, da če ste v Pythonu 2.7.3 dodelili dve spremenljivki istemu enoznakovnemu nizu, npr.

>>> a = "a" >>> b = "a" >>> c = " " >>> d = " "

Spremenljivke bodo imele enak sklic:

>>> a je b True >>> c je d True

To velja tudi za nekatere daljše nize:

>>> a = "abc" >>> b = "abc" >>> a je b True >>> " " je " " True >>> " " * 1 je " " * 1 True

>>> a = "ac" >>> b = "ac" >>> a je b False >>> c = " " >>> d = " " >>> c je d False >>> " " * 2 je " " * 2 False

Lahko kdo pojasni razlog za to?

Sumim, da so možne poenostavitve/zamenjave, ki jih naredi tolmač in/ali kakšen mehanizem predpomnjenja, ki izkorišča dejstvo, da so nizi nespremenljivi za optimizacijo v nekaterih posebnih primerih, toda kaj vem? Poskušal sem narediti globoke kopije nizov z uporabo konstruktorja str in funkcije copy.deepcopy, vendar so nizi še vedno nezdružljivi s sklici.

Razlog, da imam težave, je, da preizkušam neenakost referenčnih nizov v nekaterih testih enot, ki jih pišem za nove metode kloniranja razreda python.

3 Rešitve zbirajo spletni obrazec za "V katerih okoliščinah imajo iste vrstice isti sklic?"

Podrobnosti o tem, kdaj so nizi predpomnjeni in ponovno uporabljeni, so odvisne od izvedbe, lahko se razlikujejo od različice Pythona do različice Pythona in se nanje ne bi smeli zanašati. Če želite preveriti enakost nizov, uporabite == namesto .

V CPython (najpogosteje uporabljena implementacija Python) so nizovni literali, ki se pojavljajo v izvorni kodi, vedno internirani, tako da če se isti nizovni literal dvakrat pojavi v izvorni kodi, na koncu kažejo na isti nizovni objekt. V Pythonu 2.x lahko pokličete tudi vgrajeno funkcijo intern(), da vsilite interniranje določenega niza, vendar tega pravzaprav ne bi smeli storiti.

spremeniti dejanski namen preverjanja, ali so atributi nepravilno porazdeljeni med primerki: ta vrsta preverjanja je uporabna le za spremenljive objekte. Za atribute nespremenljivega tipa ni semantične razlike med objekti v skupni rabi in objekti, ki niso v skupni rabi. Nespremenljive tipe lahko iz svojih testov izključite z uporabo

Immutable = basestring, tuple, numbers.Number, frozenset # ... if not isinstance(x, Immutable): # Izključi vrste, za katere je znano, da so nespremenljive

Upoštevajte, da to tudi izključuje tuple, ki vsebujejo spremenljive predmete. Če jih želite preizkusiti, se boste morali rekurzivno spustiti v tuple.

V CPythonu je kot podrobnost izvedbe prazen niz pogost, prav tako nizi z enim znakom, katerih koda je v območju Latin-1. Ti ne mora biti odvisno od tega, saj je to funkcijo mogoče zaobiti.

Zahtevate lahko niz za internacija z uporabo sys.intern; to se bo v nekaterih primerih zgodilo samodejno:

Običajno so imena, uporabljena v programih Python, samodejno internirana, slovarji, ki se uporabljajo za shranjevanje atributov modula, razreda ali primerka, pa imajo internirane ključe.

sys.intern je izpostavljen, tako da ga lahko uporabite (po profiliranju!) za delovanje:

Notranji nizi so uporabni za pridobitev malo zmogljivosti pri iskanju slovarjev - če so ključi v slovarju internirani in je ključ za iskanje interniran, se lahko ujemanje ključev (po zgoščevanju) opravi s primerjavami kazalcev namesto primerjav nizov.

Upoštevajte, da je intern vgrajen v Python 2.

Mislim, da je implementacija in optimizacija. Če je vrvica kratka, se lahko (in pogosto?) »razcepijo«, vendar se na to ne morete zanašati. Ko boste imeli več vrstic, boste videli, da se ne ujemajo.

Vhod: s1 = "abc" Vhod: s2 = "abc" Vhod: s1 je s2 Izhod: Res

daljše črte

In: s1 = "abc to je veliko daljše" In: s2 = "abc to je veliko daljše" In: s1 je s2 Out: False

uporabite == za primerjavo nizov (in ne je operater).

Opazovanje/hipoteza OP (v spodnjih komentarjih), da je to lahko povezano s številom žetonov, se zdi podprta z naslednjim:

Vhod: s1 = "abc" Vhod: s2 = "abc" Vhod: s1 je s2 Izhod: False

v primerjavi s prvotnim primerom abc zgoraj.

Fizikalna naloga - 2379

2017-03-16
Dve enaki krogli imata enako temperaturo. Ena od kroglic je na vodoravni ravnini, druga je obešena na nit. Na obe krogli se prenese enaka količina toplote. Proces ogrevanja poteka tako hitro, da ni izgube toplote zaradi segrevanja sosednjih predmetov in okolju. Bodo temperature kroglic po segrevanju enake ali različne? Svoj odgovor utemelji.


rešitev:


Slika 1

Slika 2
Razlika bo povezana z obnašanjem središč mase kroglic.

Ko se kroglice segrejejo, naj se njihova prostornina poveča. V tem primeru se bo višina težišča prve krogle nad vodoravno ravnino povečala (slika 1), središče mase viseče krogle pa se bo znižalo (slika 2).

Na podlagi prvega zakona termodinamike lahko zapišemo:

a) $Q = cm \Delta T_(1) + mgh, \Delta T_(1) = \frac(Q - mgh)(cm)$;
b) $Q = cm \Delta T_(2) - mgh, \Delta T_(2) = \frac(Q + mgh)(cm)$;

kjer je $x$ - specifična toplota snov, iz katere je narejena krogla, $m$ je njena masa.

Iz tega sledi, da je $\Delta T_(2) > \Delta T_(1)$, tj. viseča krogla se mora segreti na več visoka temperatura kot žoga, ki leži na vodoravni podlagi. Ocenimo nastali učinek. Naj bo polmer krogle $R$, koeficient linearne razteznosti materiala, iz katerega je izdelana krogla, pa je enak $\alpha$. Potem bo razmerje med spremembo temperature krogle zaradi spremembe položaja njenega središča mase in spremembo temperature $\Delta T$ zaradi prenosa količine toplote $Q$ nanjo enako

$\frac( \Delta T^( \prime))( \Delta T) = \frac(mgh)(cm \Delta T) = \frac(mgR \alpha \Delta T)(cm \Delta T) = \frac (g) (c) R\alpha$.

Z izračunom ocenjenih vrednosti, na primer, za železno kroglo s polmerom $R = 0,1 m (c = 450 J/(kg \cdot K), \alpha = 11,7 \cdot 10^(-6) K^(-1 ) )$, dobimo: $\Delta T^( \prime) / \Delta T = 2,6 \cdot 10^(-8)$.

Tako je učinek, obravnavan v problemu, zanemarljiv in presega možnost eksperimentalnega odkrivanja.


Slika 3.2 - Oblikovanje kontur

obala v točkah B. S projiciranjem na isto ravnino P dobimo drugo sklenjeno krivuljo BB. Če nadaljujemo dvig vode v enakem zaporedju višje, na ravnini P dobimo sliko hriba z vodoravnimi črtami.

Za večjo preglednost je smer padanja pobočij prikazana s črticami, imenovanimi bergove kapi. Za označevanje višin kontur se njihove oznake podpišejo v prelomih kontur, pri čemer se vrh številk postavi v smeri vrha pobočja. Da bi bil relief bolj izrazit, je praviloma peta in včasih deseta vodoravna črta odebeljena.

Razliko v višini dveh sosednjih vodoravnih črt imenujemo višina reliefnega izreza.

Razdalja med dvema sosednjima vodoravnima črtama na ravnini se imenuje razdalja.

Vodoravni imajo naslednje lastnosti:

  • a) vse točke, ki ležijo na isti vodoravni črti, imajo enako višino;
  • b) vse vodoravne črte morajo biti neprekinjene;
  • c) vodoravne črte se ne smejo sekati ali cepiti;
  • d) razdalje med vodoravnimi črtami v načrtu označujejo strmino pobočja - manjša kot je razdalja (ležina), bolj strmo je pobočje;
  • e) najkrajša razdalja med vodoravnima črtama ustreza smeri največje strmine pobočja;
  • f) razvodnice in osi kotanj sekajo vodoravne črte pod pravim kotom;
  • g) vodoravne črte, ki prikazujejo nagnjena ravnina, izgledajo kot vzporedne črte.

Pogosto se za razjasnitev reliefnih oblik uporabljajo dodatne vodoravne črte, ki so prikazane s črtkanimi črtami in se imenujejo polvodoravne. Običajno se polhorizontale narišejo v primerih, ko razdalja med vodoravnimi črtami na načrtu presega 2 cm. 3.1, b prikazuje sliko z vodoravnimi črtami posamezne elemente teren.

Sorodni članki