Iterating รายชื่อของ integers และเข้าร่วมรายการจากพื้นฐานเป็นเงื่อนไข

0

คำถาม

ฉันพยายามจะ iterate รายชื่อของ integers และเข้าร่วมกับพวกเขาขึ้นอยู่กับเงื่อนไขโดยใช้ไพธอนมาตรฐานองสมุด ตัวอย่างเช่น,ฉันมีรายชื่อของ integers นั่นดูเป็นเรื่อง:

listOfIntegers = [0, 0, 0, 2, 0, 4, 6, 0, 8, 0, 0, 0, 1, 9]

ฉันอยากจะ iterate ผ่านรายการนี้และรวมค่าของเรื่องว่าผลจะเป็นข้อความของรูปแบบ:

result = '000-20-4-60-8000-1-9'

(อยู่ที่ไหน dashes เป็นรวม). เงื่อนไขของนี่คือว่าถ้า preceding จำนวนไม่เท่ากับศูนย์วิ่งต้องไว้ในด้านหน้าของมัน ถ้าคนต่อไปคืนค่าเท่ากับศูนย์มันคือเข้าร่วมตอนจบของค่าก่อนที่มัน.

integer iteration list python
2021-11-23 03:49:53
4

คำตอบที่ดีที่สุด

2

มันจะช่วย: (พิจารณาตัวเลขบวกในที่ให้รายการ)

def join(lst):
    return "".join(list(map(lambda x: str(-x), lst))).lstrip('-')

listOfIntegers = [0, 0, 0, 2, 0, 4, 6, 0, 8, 0, 0, 0, 1, 9]
print(join(listOfIntegers)) # 000-20-4-60-8000-1-9

โพรเซส:

  1. แปลงเป็นกังธาตุที่จะลบรอซึ่งถ้าเป็นอย่างนั้น:
    • 9 กลายเป็น -9
    • 0 ไม่มีลูกเล่นเป็น -0 นี่ 0 ภาษาไพธอน
  2. งั้นแปลงพวกเขาใช้เส้นสายและเข้าร่วมกับพวกเขา
  3. ทำให้แน่ใจว่าจะลบสะกดรอยตา hyphenในคดีของเรา lstrip('-') ช่วยให้พวกเรากับเรื่องนั้น
2021-11-23 04:48:25

โปรดจำไว้ว่าคุณทำอะไรและทำไมมันได้ผล มันทำให้มันดีขึ้นสำหรับคนอื่นที่อาจจะเจอหน้านี้กันทีหลัง
krmogi

คำตอบของคุณอาจจะปรับปรุงกับเพิ่มเติมสนับสนุนข้อมูล โปรด แก้ไข เพื่อเพิ่มรายละเอียดเพิ่มเติม,อย่างเช่น citations หรือเอกสารคู่มือเพื่อคนอื่นสามารถยืนยันเรื่องนั้นคำตอบของคุณเลยถูกต้อง คุณสามารถหาข้อมูลมากกว่าที่จะเขียนคำตอบที่ดี ในการช่วยเหลือศูนย์กลาง.
Community
1

เป็นตรงไปตรงมาวิสร้างข้อความจากรายการของ integers,ตามโดยง่าย regex นมาแทน:

listOfIntegers = [1, 0, 0, 2, 0, 4, 6, 0, 8, 0, 0, 0, 1, 9]
inp = ''.join([str(x) for x in listOfIntegers])
result = re.sub(r'(?<=.)(?=[^\D0])', '-', inp)
print(result)  # 100-20-4-60-8000-1-9
2021-11-23 04:07:00

Concatenation คือสิ่งที่ฉันเจอคนอื่นทำเพื่อที่จะแก้ปัญหาคล้ายกับเรื่องนี้ ที่จริงฉันค่อนข้างแน่ใจว่าฉันเคยเห็นวิธีแก้ปัญหาดูแล้วก็เหมือนกับเรื่องนี้ ฉันคิดว่าหนึ่งรายละเอียดฉันล้มเหลวในการพูดถึงนั่นคือค่าต่างๆภายในรายการนี้ของ integers มีความสามารถในการเปลี่ยนแปลงจะมีค่ามาจาก 0-9. จะเกิดอะไรขึ้นถ้าตัวอย่างที่สองรายการของรายการตอนนี้กลายเป็น 1. อยู่ยังไงก็ต้อง automate ที่ concatenation โพรเซสเช่นนั้นผลตอนนี้จะเป็น#0-10-20-4-60-8000-1-9
42Dugg

@Dugg ฉันต้องปรับอีกคำตอบ
Tim Biegeleisen

นี่เช่นเดียวอีกตอบด้านบนทำงานได้อย่างไรก็ตามถ้าใบรายการเปลี่ยนเรื่องนั้นรายการแรกของรายการตอนนี้กลายเป็น 1,ผลลัพธ์ที่ได้#-100-20-4-60-8000-1-9 อยู่ไหนวิ่งก็คือโชคร้ายที่วางไว้ในที่สุดเริ่มต้น มันมีทางที่จะกำจัดมันเกิดขึ้นเช่นนั้นผลจะเป็น#100-20-4-60-8000-1-9? ก็คุณเป็นตัวของช่วยดังนั้นไกลองกับเรื่องนี้ ขอบคุณ!
42Dugg

@42Dugg ตรวจปรับปรุงคำตอบ เราสามารถเพิ่มเป็นบวก lookbehind ซึ่งแทนที่ dashes เป็นเพียงถูกเพิ่มสำหรับตัวอักษรอื่นนอกจากคนแรกมาแล้ว
Tim Biegeleisen
0

นี่เป็นเรียบง่ายทาง:

listOfIntegers = [0, 0, 0, 2, 0, 4, 6, 0, 8, 0, 0, 0, 1, 9]

for i in listOfIntegers:
    if i != 0:
        print("-" + str(i), end="")
    else:
        print(str(i), end="")

สำหรับแต่ละรายการในช่องรายการเราตรวจสอบว่ารายการไม่เท่ากับ 0. ถ้ามันไม่เท่ากับ 0 เราพิมพ์ออกจากรายการที่กับใบหน้าของมันและใช้ end พารามิเตอร์ที่หลีกเลี่ยงคนใหม่แล้วเราพลาดอะไรไปเนี่ย? ถ้ามันเป็น 0 เราแค่พิมพ์ออกการซื้อขายทางธุรกิจ

2021-11-23 04:35:53
0

ใช้ไปเรื่อยๆ:

def func(nums):
    result = ''
    for i, num in enumerate(nums):
        if num != 0 and i != 0:
            result += '-'
        result += str(num)
    return result
2021-11-23 03:55:07

มันทำงานออกมาเยี่ยมอย่างไรก็ตามถ้าใบรายการเปลี่ยนเรื่องนั้นรายการแรกของรายการตอนนี้กลายเป็น 1,ผลลัพธ์ที่ได้#-100-20-4-60-8000-1-9 อยู่ไหนวิ่งก็คือโชคร้ายที่วางไว้ในที่สุดเริ่มต้น มันมีทางที่จะกำจัดมันเกิดขึ้นเช่นนั้นผลจะเป็น#100-20-4-60-8000-1-9? ขอบคุณ!
42Dugg

ขอโทษสำหรับหายตัวไปที่ขอบคดี เราได้เพียงเพิ่มเงื่อนไขเพื่อข้าคนแรกหมายเลข ฉันแก้ไขรหัสกว่านี้ละกัน
Tyler Liu

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่