ฉันมี:
words = ['hello', 'world', 'you', 'look', 'nice']
ฉันต้องการมี:
'"hello", "world", "you", "look", "nice"'
วิธีที่ง่ายที่สุดในการทำ Python คืออะไร?
ฉันมี:
words = ['hello', 'world', 'you', 'look', 'nice']
ฉันต้องการมี:
'"hello", "world", "you", "look", "nice"'
วิธีที่ง่ายที่สุดในการทำ Python คืออะไร?
คำตอบ:
>>> words = ['hello', 'world', 'you', 'look', 'nice']
>>> ', '.join('"{0}"'.format(w) for w in words)
'"hello", "world", "you", "look", "nice"'
คุณสามารถformat
โทรเพียงครั้งเดียว
>>> words = ['hello', 'world', 'you', 'look', 'nice']
>>> '"{0}"'.format('", "'.join(words))
'"hello", "world", "you", "look", "nice"'
อัปเดต: การเปรียบเทียบบางส่วน (ดำเนินการในปี 2552 mbp):
>>> timeit.Timer("""words = ['hello', 'world', 'you', 'look', 'nice'] * 100; ', '.join('"{0}"'.format(w) for w in words)""").timeit(1000)
0.32559704780578613
>>> timeit.Timer("""words = ['hello', 'world', 'you', 'look', 'nice'] * 100; '"{}"'.format('", "'.join(words))""").timeit(1000)
0.018904924392700195
ดูเหมือนว่าformat
จะมีราคาค่อนข้างแพง
อัปเดต 2: ทำตามความคิดเห็นของ @ JCode เพิ่ม a map
เพื่อให้แน่ใจว่าjoin
จะใช้งานได้ Python 2.7.12
>>> timeit.Timer("""words = ['hello', 'world', 'you', 'look', 'nice'] * 100; ', '.join('"{0}"'.format(w) for w in words)""").timeit(1000)
0.08646488189697266
>>> timeit.Timer("""words = ['hello', 'world', 'you', 'look', 'nice'] * 100; '"{}"'.format('", "'.join(map(str, words)))""").timeit(1000)
0.04855608940124512
>>> timeit.Timer("""words = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] * 100; ', '.join('"{0}"'.format(w) for w in words)""").timeit(1000)
0.17348504066467285
>>> timeit.Timer("""words = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] * 100; '"{}"'.format('", "'.join(map(str, words)))""").timeit(1000)
0.06372308731079102
.join(words)
ด้วย.join(map(str, words))
และแสดงให้เราเห็นว่าเป็นอย่างไร
คุณสามารถลองสิ่งนี้:
str(words)[1:-1]
คำตอบ @jamylak เวอร์ชันอัปเดตพร้อม F Strings (สำหรับ python 3.6+) ฉันใช้ backticks สำหรับสตริงที่ใช้สำหรับสคริปต์ SQL
keys = ['foo', 'bar' , 'omg']
', '.join(f'`{k}`' for k in keys)
# result: '`foo`, `bar`, `omg`'
repr
ซึ่งเป็น lil hacky ในกรณีเฉพาะนี้แทนที่จะชัดเจนกับคำพูด