Pythはどのように改善できますか?[閉まっている]


24

Pythは現在開発中です。つまり、常に新しい機能が追加されています。

Pythをより良い言語にしたいので、人々が探している機能を知りたいです。

これは、Pythを改善するためのアイデアを投稿する場所です。

あなたの答えで、述べてください:

  • 変更/追加したいもの。

  • 変更の使用例。

提案を実装する予定がある場合はコメントします。

提案するアイデアが既に提案されているかどうかを確認してください。実装したいアイデアに賛成票を投じてください。


実装された提案:


私が質問を投稿したとき、これはこのメタ質問ごとに話題になっていたが、もはや明確ではない。


1
なぜこれがコミュニティWikiなのですか?
ジオビット

4
これは、議論と提案の集まりです。Pythの機能を提案しても、誰も担当者を獲得したり失ったりするべきではありません。また、実装された提案はおそらく削除する必要があります。この関連する質問もコミュニティwikiです。
デニス

9
このような質問についてどう思うかわかりません。PPCGはおそらくPythのユーザーベースの大部分(すべてではないにしても)をカバーしているため、ここでは一種の理にかなっていることがわかりますが、問題トラッカーとして使用すべきかどうかはわかりません。メタ投稿に回答を追加しました。
マーティンエンダー

これはメタではありませんか?真剣にみんな
アレックティール

2
@AlecTeal「メタプログラミングパズルとコードゴルフスタックエクスチェンジは、プログラミングパズルやコードゴルフ自体について議論するのではなく、ユーザーがコードゴルフスタックエクスチェンジの仕組みとポリシーについて議論するサイトの一部です。」メタはこのコミュニティに関するものです。それは本当にメタに属していません。ここに属しているかどうかは、PPCG上にあるかどうかについては、現在リンクしているメタ投稿で議論されています。
マーティンエンダー

回答:


7

入れ子ループ

forループをネストしたい場合、現在、F<var><seq>内部で使用するためにバイトを浪費するV<seq>必要があります。ループをネストするとループに使用される変数が変わるラムダと同じものが欲しいです。


これはL、たとえば、C2回目に呼び出されたときに再定義する可能性があるのような他のものにも拡張可能です。
FryAmTheEggman


4

より簡単なモジュールのインポート

これまでのところ、使用$するたびに次のようになりました。

$from <module> import <function> as <pyth-function-with-same-arity>$
for example:
$from unicodedata import name as neg$

たとえば、これを要約した新しい関数があります.$

.$"unicodedata""name""neg"
.$"unicodedata name neg"

または、次のような新しい構文を使用するのは_M簡単ではないかもしれません:

_$unicodedata name$

さらに、各アリティを持つ1つの関数に1文字のマクロ名を付けて、これらの呼び出しを短くすることができます(_$オプションを除く)。


4

睡眠

これはここで問題を引き起こし、@ mbomb007はそれをPythの改善として置くことを提案しました。基本的に、今、与えられた秒数の間スリープするために、私は次のようなことをする必要があります:

Q$__import__('time').sleep(Q)$

これは迷惑であり、長く続きます。


日付関数を使用して、スリープ動作をシミュレートできます。f>.d1Q0たとえば、Q数秒間スリープします。
ジャクベ

@ジャクベそれは常に動作しません。ドキュメントによると、Unixでは、プログラムの実行時間を返します。ユーザーが入力を入力しているとき、これは悪いです。
kirbyfan64sos

これはどうですか:J.d0f>-.d0JQ0。それはかなり長いですが...私は同意します、スリープ機能はいいでしょう。
ジャクベ

4

その他のラムダ

これは本当にFryAmTheEggmanのアイデアですが、それを公開するために投稿しています。

2つの異なる1引数のラムダを使用するとコードが短くなり、一方1つの2引数のラムダを使用しなければならないことはないことがあります。

持っていてLM友人が使用するたびに異なる関数を再定義しておくといいでしょう。たとえば、次のコード:

L*b2L*b3y5'5

次のようにコンパイルできます。

@memoized
def subsets(b):
 return times(b,2)
@memoized
def read_file(b):
 return times(b,3)
imp_print(subsets(5))
imp_print(read_file(5))

もちろん、関数の正確な選択は変更できます。


3

改善された多次元配列

現在、多次元配列の使用はかなり困難です。たとえば、CコードA[B][C][D]@@@ABCDPythに変換されます。このような@A[BCD)もののほうがずっといいでしょう(ただし、ここでは短くはありません)。同じことも当てはまりXます。A[B][C][D] = E現在はX@@ABCDE、可能なときXA[BCD)Eです。


3

いくつかの小さなアイデア

  • 絶対差、すなわちabs(val1 - val2)。現在は.a-<val1><val2>です。
  • min/ max値。現在、それはhS,<val1><val2>/ eS,<val1><val2>またはより多くの値を持つ同じものです。(シーケンスのhS<seq>/ eS<seq>は十分に短い。)

3

Pythの機能ではありませんが、それでも...

Pythコードをモジュール化する

これは、フードの下のPythにのみ影響します。Pyth実装の一部は非常に複雑です。多くのグローバル変数とその他のハッキングなもの。

数日前、別のPythonスクリプトからPyth実装のいくつかの関数(Pythコマンドの文字列の実行など)を使用しようとしたときに本当にイライラしました。

次のようなものがいいでしょう:

from pyth import execute_pyth
print(execute_pyth(code='sQ', input='[1, 2, 3]'))

まあ、これはPyth5のヘルプコールだと思います。



1

ユニークな要素

Pythには現在、シーケンスの一意の要素を取得する簡単な方法がありません。一意かどうかをテストできますが、実際に一意のアイテムを取得することはできません。現在、最短の方法は次のとおりです

{.-Q{Q

6バイト!それを、一意の要素を取得することが1バイトの操作であるKと比較してください=x

.}ここでうまくいくでしょうか?


どのようなユースケース(tat oneチャレンジ以外)を考えていますか?
isaacg

@isaacgよく思い出せませんが、リストの一意の要素を取得してから取得する必要があり、他の何か(常により長いもの)を使用する必要がありました。
kirbyfan64sos

私はPythプログラマーではありませんが、GolfScript / CJamで常にこれに遭遇してい.&ます。_&多くの回答に表示されます。とても便利です。
リン

1
これはどう違い{Qますか?
isaacg

1
@isaacg並べ替えられました
Ypnypn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.