파이썬. 리스트 내 길이가 최소인 것 중 가장 앞의 것

임준혁@Google의 이미지

안녕하세요. 프로그래밍 새내기인데.. 질문이 있습니다.
str들이 몇 개 있는 리스트가 있고 거기서 길이가 가장 짧은 거를 찾으려 합니다.
그런데 길이가 가장 짧은 것 중에서도 가장 앞에 있는 걸 출력하고 싶거든요.
이렇게 코드를 짜봤습니다. x 선언을 안했다고 뜨네요.
갑자기 어떠한 변수를 선언하고 싶을 때 어떻게 해야할 지 모르겠습니다.
(min함수를 사용하지 않고 가장 짧은 것 중 가장 앞에 있는 것을 뽑으려했습니다.)

s_list = ['abc', 'bcd', 'bcdefg', 'abba', 'cddc', 'opq']
 
 
for i in s_list:
    if len(i) < len(s_list[0]):
        len(i) == x                 # x 선언을 어떻게 해야할지 모르겠음
    if len(i) == x:
        break
print(x)                            # 여기는 x가 잘 나오나 확인 해본 겁니다.
 
for a in s_list:
    if len(a) == x:
        break
    break
 
print(a)
익명 사용자의 이미지

어떤 코드를 짜려고 하셨는지는 모르겠습니다만,

이런 종류의 작업을 하기 위해 루프를 돌리는 것은 pythonic 하지 않습니다.

pythonic하게 아래와 같이 짭시다.

s_list = ['abc', 'bcd', 'bcdefg', 'abba', 'cddc', 'opq']
 
print(min(s_list, key=len))
임준혁@Google의 이미지

아 min함수를 쓰지 않고 길이가 가장 짧은 것들 중 가장 앞의 것을 뽑으려했습니다.!

익명 사용자의 이미지

도대체 왜 그런 조건이 있어야 하는지 이해할 수는 없지만, 저는 관대하니까 일단 넘어가겠습니다.

s_list = ['abc', 'bcd', 'bcdefg', 'abba', 'cddc', 'opq']
 
print(max(s_list, key=lambda s: -len(s)))
임준혁@Google의 이미지

ㅋㅋㅋ 대학 과제. 파이썬 연습문제니까 이해해주세요^^

파이썬3의 이미지

# -*- coding: utf-8 -*-
 
# KLDP [163148]
 
"""테스트를 위하야 첫번째 원소에 'mystring' 을 추가했어요"""
s_list = ['mystring', 'abc', 'bcd', 'bcdefg', 'abba', 'cddc', 'opq']
 
"""첫번째 원소를 각 변수에 저장하여 초기화"""
비교값_길이 = len(s_list[0]) # <class 'int'>
비교값_원소 = s_list[0] # <class 'str'>
 
# 각 원소마다 순차적으로 길이값을 비교하여 작으면,
# 바로 위항목 변수값들(비교값_길이, 비교값_원소)을 갱신합니다
for i in range(0, len(s_list)):
    if 비교값_길이 > len(s_list[i]):
        비교값_길이 = len(s_list[i])
        비교값_원소 = s_list[i]
 
print(비교값_길이, 비교값_원소)
 
# EOF

[우분투 18.04 파여폭스 나비에서 적었어요~]

임준혁@Google의 이미지

감사해용~

익명 사용자의 이미지

파이썬 1도 모르는 사람이고, 어떤게 pythonic한지 모르는 사람입니다.

#!/usr/bin/python
s_list = ['abc', 'bcd', 'bcdefg', 'abba', 'cddc', 'opq']
 
lenMin=9999
minWord=""
 
for i in s_list:
        print(len(i))
        if lenMin > len(i):
                lenMin=len(i)
                minWord=i
 
print(minWord,lenMin)

아무래도 min함수와 비슷하게 구현하는 학과 과제 인거 같은데

for문을 돌면서 왜 가장 작은 길이중 첫번째가 나오는지 고민해보세요

익명 사용자의 이미지

#!/usr/bin/python
s_list = ['a' * 10000]
 
lenMin=9999
minWord=""
 
for i in s_list:
        print(len(i))
        if lenMin > len(i):
                lenMin=len(i)
                minWord=i
 
print(minWord,lenMin)
익명 사용자의 이미지

딴지거는거죠? ㅋㅋㅋㅋ
내용의 의미를 봐야지 코드의 완벽성을 보여주려고 적은게 아닙니다.
수준이참...

익명 사용자의 이미지

why so serious?

임준혁@Google의 이미지

감사해용~~ 내용의 의미를 보겠슴돠

swish95의 이미지

x 에 대해 초기화도 안되어 있고
있지도 않은 x 를 len(i) 와 비교(==) 를 하는 문법이 있네요?

그리고 비교(==)하는게 아니라 대입(=) 해야 할거 같구요
그다음에 x 와 len(i) 를 비교해서 뭘하던지 해야 되지 않을까요?

그리고 이런 문제는 어쨌든 모든 항목을 검사해야 합니다.
중간에 break 가 들어갈수 없다는 말입니다.

처음 발견한 제일 짧은 길이의 내용을 검사해서 길이가 같으면 break 가 아니라 continue 를 이용해야죠 ^^

------------------------------------------------------------
ProgrammingHolic

임준혁@Google의 이미지

감사해용~

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.