0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Siri AI(macOS 27)に「リストの重複を取り除くPython関数」を頼んだら、日本語と英語で返ってくるコードが違った

0
Posted at

macOS 27のSiri AI(β版)に、同じ依頼を日本語と英語で入力して、Pythonの関数を書いてもらいました。日本語では1通り、英語では3通りのコードが返ってきました。返ってきたコードをそのまま載せて、違いを整理します。

前提の環境

  • macOS 27.0(Golden Gate)のSiri AI(β版)
  • Siriの言語は英語(日本語のままではSiri AIが使えなかったため)
  • 依頼は文字入力。日本語で入力しても受け付けてくれます

依頼した文

リストの重複を取り除くPythonの関数を書いて
Write a Python function that removes duplicates from a list.

日本語で頼んだとき

説明文は英語で、関数が1つと使い方の例が返ってきました。

def remove_duplicates(lst):
    seen = set()
    return [x for x in lst if not (x in seen or seen.add(x))]

# Example usage:
# remove_duplicates([1, 2, 2, 3, 1]) → [1, 2, 3]

英語で頼んだとき

順序を保つ関数に加えて、「Alternative Approaches」の見出しの下に別の書き方が2つ並びました。

def remove_duplicates(input_list):
    seen = set()
    result = []
    for item in input_list:
        if item not in seen:
            seen.add(item)
            result.append(item)
    return result
def remove_duplicates_unordered(input_list):
    return list(set(input_list))
def remove_duplicates_ordered(input_list):
    return list(dict.fromkeys(input_list))

4つの書き方の違い

関数 元の順序 読みやすさ
日本語で返った内包表記 保つ 低い(seen.add(x) が None を返すことを利用している)
英語で返った for 文 保つ 高い
list(set(...)) 保たない 高い
list(dict.fromkeys(...)) 保つ(Python 3.7以降) 高い

日本語で返った1行は、seen.add(x) が常に None(偽)を返すことを使って、「まだ見ていない要素なら記録して残す」を1行に詰めています。動きは英語版の for 文と同じですが、内包表記の中で副作用を起こしているため、読み手には意図が伝わりにくい書き方です。

list(set(...)) は、数字の小さなリストだと順序が保たれたように見えることがあります。文字列のリストでは、実行するたびに並びが変わることがあります。

remove_duplicates_unordered(["b", "a", "b", "c", "a"])
# 例: ['c', 'a', 'b'](実行ごとに変わることがある)

remove_duplicates_ordered(["b", "a", "b", "c", "a"])
# ['b', 'a', 'c']

どの書き方も、要素がリストのような変更できる型だと TypeError: unhashable type: 'list' で止まります。

どれを使うか

  • 順序を保ちたいなら list(dict.fromkeys(...))。英語で頼んだときの説明も、この書き方を「1行で順序を保てる」と紹介していました
  • 順序が要らないなら list(set(...))
  • 日本語で返った内包表記は動きますが、あとで読む人のことを考えると、上の2つのどちらかに置き換えるほうが無難です

結果

同じ依頼でも、英語で頼んだほうが書き方の選択肢まで返ってきました。日本語で頼んだときは、説明文も英語のままでした。Siri AIの日本語β版は10月の提供予定と報じられています。

Siri AIに試した依頼10種類の全体は、Zennにまとめています。
https://zenn.dev/menmen_ailab/articles/6f1d50800ed4d8


AIツールを実際に試して、気になったことをここに残しているのでよろしければぜひチェックを。

  • 日々の細かいつまずきなど: X @menmen_ailab
  • 経緯と考えたことなど: note
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?