পাইথনে সংখ্যার একটি তালিকা যোগ করুন


366

আমার কাছে সংখ্যার একটি তালিকা রয়েছে যেমন [1,2,3,4,5...]এবং আমি গণনা করতে চাই (1+2)/2এবং দ্বিতীয়টির জন্য (2+3)/2এবং তৃতীয়টি (3+4)/2এবং আরও অনেক কিছু। আমি এটা কিভাবে করবো?

আমি দ্বিতীয়টির সাথে প্রথম সংখ্যার যোগ করতে এবং এটি 2 দিয়ে বিভক্ত করতে চাই, তারপরে দ্বিতীয়টিকে তৃতীয়টির সাথে যোগ করব এবং 2 দিয়ে ভাগ করব, ইত্যাদি।

এছাড়াও, আমি কীভাবে সংখ্যার একটি তালিকা যোগ করতে পারি?

a = [1, 2, 3, 4, 5, ...]

তাই কি:

b = sum(a)
print b

একটি নম্বর পেতে?

এটি আমার পক্ষে কাজ করে না।


এই তালিকা কত দিন? 0 এবং 1 এর মধ্যে মানগুলি কতটা এলোমেলো?
কেভিপি

2
অজগরটি গোলমেলে যাওয়ার আগে আপনি যদি সংখ্যার সংজ্ঞা দেন তবে ডেল যোগ চেষ্টা করুন। হতে পারে এটি কোথাও কোডে সংজ্ঞায়িত হয়েছে এবং ডিফল্ট ফাংশন ওভাররাইট করে। সুতরাং আমি এটি মুছে ফেলেছি এবং সমস্যাটি সমাধান করা হয়েছিল। (ব্যবহারকারী4183543 দ্বারা উত্তর)
নিককো

1
"এটি কাজ করে না" কোনও সমস্যার বিবরণ নয়।
লার্নের মারকুইস

উত্তর:


279

প্রশ্ন 1: সুতরাং আপনি চান (উপাদান 0 + উপাদান 1) / 2, (উপাদান 1 + উপাদান 2) / 2, ... ইত্যাদি

আমরা দুটি তালিকা তৈরি করি: প্রথম ব্যতীত প্রতিটি উপাদানগুলির একটি এবং শেষ ব্যতীত প্রতিটি উপাদানগুলির একটি। তারপরে আমরা দুটি গড় তালিকা থেকে নেওয়া প্রতিটি জুটির গড় গড় গড়। আমরা zipদুটি তালিকা থেকে জোড়া নিতে ব্যবহার করি ।

আমি ধরে নিয়েছি আপনি ফলাফলের দশমিক দেখতে চান, যদিও আপনার ইনপুট মানগুলি পূর্ণসংখ্যা হয়। ডিফল্টরূপে পাইথন পূর্ণসংখ্যা বিভাগ করে: এটি বাকী অংশটি বাদ দেয়। জিনিসগুলিকে সমস্ত দিক দিয়ে বিভক্ত করতে আমাদের ভাসমান-পয়েন্ট নম্বরগুলি ব্যবহার করতে হবে। সৌভাগ্যক্রমে, একটি ফ্লোট দ্বারা কোন ইন্টি বিভাজক একটি ভাসমান উত্পাদন করতে পারে, তাই আমরা কেবল 2.0পরিবর্তে আমাদের বিভাজকের জন্য ব্যবহার করি 2

এভাবে:

averages = [(x + y) / 2.0 for (x, y) in zip(my_list[:-1], my_list[1:])]

প্রশ্ন 2:

যে ব্যবহার sumভাল কাজ করা উচিত। নিম্নলিখিত কাজগুলি:

a = range(10)
# [0,1,2,3,4,5,6,7,8,9]
b = sum(a)
print b
# Prints 45

এছাড়াও, আপনাকে প্রতিটি ধাপে চলার পথে একটি ভেরিয়েবলের জন্য সমস্ত কিছু নির্ধারণ করার দরকার নেই। print sum(a)ঠিক কাজ করে।

আপনি কী লিখেছেন এবং কীভাবে এটি কাজ করছে না সে সম্পর্কে আপনাকে আরও নির্দিষ্ট হতে হবে।


আমি পেলাম না, প্রথম প্রশ্নের জন্য আমি আমার_ তালিকাটি অপরিজ্ঞাত করে ফেলেছি। আমার প্রোগ্রামে এটির এলোমেলো সংখ্যা 1, 2, 3, 4 নয় .. দ্বিতীয় প্রশ্নের জন্য আমি আমার সাথে কাজ করি না কেন জানি না
লেও

37
my_listআপনি এটি সংজ্ঞায়িত হলেই সংজ্ঞায়িত হয়। আপনি যে তালিকার সাথে কাজ করার চেষ্টা করছেন তার জন্য যা কিছু স্থান-ধারক হওয়ার কথা ছিল। আপনি এটি কী বলেছিলেন তা অনুমান করতে পারি না।
কার্ল নচেটেল

2
6 বছর পরে, এই পোস্টটি এখনও মানুষকে সাহায্য করছে। আমার কোডে আমার একটি ত্রুটি ছিল এবং আপনার কোডটি আপনার কাছে সম্পর্কিত ধারণাগুলিও সঠিক ছিল তা নিশ্চিত করার জন্য আপনার পোস্টটি ব্যবহার করতে সক্ষম হয়েছি, সুতরাং সমস্যাটি অবশ্যই অন্য কোথাও থাকা উচিত। তারপর আমি এটি খুঁজে পেয়েছি। কেবল আপনাকে এবং প্রশ্নের সাথে থাকা ব্যক্তিকে দ্রুত ধন্যবাদ হিসাবে একটি আপ-ভোট দিয়েছেন। শুভ কামনা.
TMWP

1
@ কার্লকনেটটেল তাঁর প্রশ্নের একটি তালিকা রেখেছিলেন এবং এটি " a" বলা হয়েছিল ।
হ্যালো গুডবাই

1
যেহেতু zipএটি সংক্ষিপ্ত যুক্তির শেষে পৌঁছেছে তখন zip(my_list, my_list[1:])এটি যথেষ্ট।
চিপনার

114

সংখ্যার সমষ্টি তালিকা:

sum(list_of_nums)

একটি তালিকা বোধগম্যতা ব্যবহার করে n এবং n এর অর্ধেক গণনা করা - (যদি আমার প্যাটার্নটি সঠিক থাকে) :

[(x + (x - 1)) / 2 for x in list_of_nums]

সংযুক্ত সংলগ্ন উপাদানগুলি, যেমন ((1 + 2) / 2) + ((2 + 3) / 2) + ... হ্রাস এবং ল্যাম্বডাস ব্যবহার করে

reduce(lambda x, y: (x + y) / 2, list_of_nums)

4
আমি মনে করি তিনি সংলগ্ন উপাদানগুলির যোগফল চান। গড় নেওয়ার কোনও মানে হবে না xএবং x - 1; আমরা এর পরিবর্তে কেবল 0.5 বিয়োগ করতে পারি।
কার্ল নচেটেল

4
হ্রাস ফাংশন পোস্ট যা বলে তা করে না। এটি গণনা করে (((এ 1 + এ 2) / 2 + এ 3) / 2 + এ 4) / 2 ...
মোবার্গ

from functools import reduce
tyrex

69

প্রশ্ন 2: পূর্ণসংখ্যার একটি তালিকা যোগ করতে:

a = [2, 3, 5, 8]
sum(a)
# 18
# or you can do:
sum(i for i in a)
# 18

তালিকায় স্ট্রিং হিসাবে পূর্ণসংখ্যা থাকলে:

a = ['5', '6']
# import Decimal: from decimal import Decimal
sum(Decimal(i) for i in a)

4
sum(i for i in a)শুধু অপ্রয়োজনীয়।
জিন-ফ্রানসোয়া ফ্যাব্রে

6
sum(Decimal(i) for i in a)=> sum(int(i) for i in a)বাsum(map(int,a))
জিন-ফ্রানসোয়া ফ্যাব্রে

34

আপনি এইভাবে চেষ্টা করতে পারেন:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sm = sum(a[0:len(a)]) # Sum of 'a' from 0 index to 9 index. sum(a) == sum(a[0:len(a)]
print(sm) # Python 3
print sm  # Python 2

4
এটির মতো অনুলিপি তৈরি করার দরকার নেই এবং এটি মারাত্মকভাবে অযৌক্তিক। সমস্ত ভোট থাকা সত্ত্বেও প্লেগের মতো এড়িয়ে চলুন ...
জিন-ফ্রান্সোয়েস ফ্যাব্রে

@ জিন-ফরাসোইস ফ্যাবরে আপনি কি আপনার মন্তব্য সম্পর্কে বিস্তারিত জানাতে পারেন? কেন এই "ভয়াবহভাবে অযৌক্তিক"?
পিয়ারএফ

প্রারম্ভিকদের জন্য a[0:len(a)]একটি অনুলিপি তৈরি করে a, সিপিইউ এবং মেমরি নষ্ট করার পাশাপাশি কী দরকার? তারপরে print(sm)অজগর 2 তেও কাজ করে I ২০১৩ সালের মাঝামাঝি কেন এটির এতগুলি উত্স রয়েছে তা আমি বুঝতে পারি না ... তবে এটি এখানে বেশিরভাগ উত্তরের ক্ষেত্রে প্রযোজ্য।
জিন-ফ্রান্সোইস ফ্যাব্রে

27
>>> a = range(10)
>>> sum(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>>> del sum
>>> sum(a)
45

দেখে মনে হচ্ছে sumকোথাও কোডটিতে সংজ্ঞা দেওয়া হয়েছে এবং ডিফল্ট ফাংশনটি ওভাররাইট করে। সুতরাং আমি এটি মুছে ফেলেছি এবং সমস্যাটি সমাধান করা হয়েছিল।


16

একটি সহজ list-comprehensionএবং ব্যবহার করে sum:

>> sum(i for i in range(x))/2. #if x = 10 the result will be 22.5

4
আপনার ব্যবহারের দরকার নেই [এবং ], আপনি কেবল জেনারেটর এক্সপ্রেশনটি পাস করতে পারেনsum(i/2. for i in range(x))
ইভান

1
sum(range(x)) / 2.সব বিভাগকে এড়িয়ে চলে, শেষ পর্যন্ত কেবল ভাগ করুন।
জিন-ফ্রান্সোইস ফ্যাব্রে

13

সমস্ত উত্তর একটি প্রোগ্রাম্যাটিক এবং সাধারণ পদ্ধতির দেখায়। আমি আপনার মামলার জন্য নির্দিষ্ট গাণিতিক পদ্ধতির পরামর্শ দিচ্ছি। এটি দীর্ঘ তালিকার জন্য বিশেষত দ্রুত হতে পারে। এটি কাজ করে কারণ আপনার তালিকাটি প্রাকৃতিক সংখ্যার একটি তালিকা রয়েছে n:

ধরা যাক আমাদের প্রাকৃতিক সংখ্যা আছে 1, 2, 3, ..., 10:

>>> nat_seq = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

আপনি sumএকটি তালিকায় ফাংশনটি ব্যবহার করতে পারেন :

>>> print sum(nat_seq)
55

তালিকার সর্বশেষ উপাদানটির মান n*(n+1)/2যেখানে nরয়েছে সেই সূত্রটিও আপনি এখানে ব্যবহার করতে পারেন (এখানে nat_seq[-1]:), সুতরাং আপনি উপাদানগুলির মাধ্যমে পুনরাবৃত্তি এড়াতে পারবেন:

>>> print (nat_seq[-1]*(nat_seq[-1]+1))/2
55

ক্রমটি তৈরি করতে (1+2)/2, (2+3)/2, ..., (9+10)/2আপনি একটি জেনারেটর এবং সূত্র ব্যবহার করতে পারেন (2*k-1)/2.(মানগুলি ভাসমান পয়েন্টগুলি তৈরি করতে বিন্দুটি নোট করুন)। নতুন তালিকা তৈরি করার সময় আপনাকে প্রথম উপাদানটি এড়িয়ে যেতে হবে:

>>> new_seq = [(2*k-1)/2. for k in nat_seq[1:]]
>>> print new_seq
[1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5]

এখানেও আপনি sumসেই তালিকার ফাংশনটি ব্যবহার করতে পারেন :

>>> print sum(new_seq)
49.5

তবে আপনি সূত্রটিও ব্যবহার করতে পারেন (((n*2+1)/2)**2-1)/2, তাই আপনি উপাদানগুলির মাধ্যমে পুনরাবৃত্তি এড়াতে পারবেন:

>>> print (((new_seq[-1]*2+1)/2)**2-1)/2
49.5

6

এই সমস্যা সমাধানের সহজ উপায়:

l =[1,2,3,4,5]
sum=0
for element in l:
    sum+=element
print sum


3
import numpy as np    
x = [1,2,3,4,5]
[(np.mean((x[i],x[i+1]))) for i in range(len(x)-1)]
# [1.5, 2.5, 3.5, 4.5]

3

জেনারেটর এটি লেখার একটি সহজ উপায়:

from __future__ import division
# ^- so that 3/2 is 1.5 not 1

def averages( lst ):
    it = iter(lst) # Get a iterator over the list
    first = next(it)
    for item in it:
        yield (first+item)/2
        first = item

print list(averages(range(1,11)))
# [1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5]

পূর্ণসংখ্যা বিভাজন এড়াতে আপনি 2.0 দ্বারা ভাগও করতে পারেন।
ক্রিস অ্যান্ডারসন

@ ক্রিসঅ্যান্ডারসন অজগর 3 এ সত্য নয় flo ভাসমান পয়েন্ট বিভাগটি ডিফল্ট।
জাস্টিন মাইনার্স 15'17

3

আসুন শুরুর জন্য এটি সহজ করে তুলি: -

  1. globalশব্দ একটি নতুন স্থানীয় পরিবর্তনশীল উৎপাদন ছাড়া বিশ্বব্যাপী পরিবর্তনশীল বার্তা প্রধান ফাংশন মধ্যে নিয়োগ করা অনুমতি দেবে
    message = "This is a global!"


def main():
    global message
    message = "This is a local"
    print(message)


main()
# outputs "This is a local" - From the Function call
print(message)
# outputs "This is a local" - From the Outer scope

এই ধারণাকে শেডিং বলা হয়

  1. পাইথনে সংখ্যার একটি তালিকা যোগ করুন
nums = [1, 2, 3, 4, 5]

var = 0


def sums():
    for num in nums:
        global var
        var = var + num
    print(var)


if __name__ == '__main__':
    sums()

ফলাফল = 15


2

pairwise ইটারটুল রেসিপিটি ব্যবহার করে :

import itertools
def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = itertools.tee(iterable)
    next(b, None)
    return itertools.izip(a, b)

def pair_averages(seq):
    return ( (a+b)/2 for a, b in pairwise(seq) )

2

সংক্ষিপ্ত এবং সাধারণ:

def ave(x,y):
  return (x + y) / 2.0

map(ave, a[:-1], a[1:])

এবং এখানে এটি কেমন দেখাচ্ছে:

>>> a = range(10)
>>> map(ave, a[:-1], a[1:])
[0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5]

পাইথন কীভাবে mapদু'জনের বেশি তালিকা পরিচালনা করে তাতে কিছু বোকামির কারণে আপনাকে তালিকাটি কেটে ফেলতে হবে a[:-1],। আপনি যদি ব্যবহার করেন তবে এটি যেমনটি আশা করেন তেমন কাজ করে itertools.imap:

>>> import itertools
>>> itertools.imap(ave, a, a[1:])
<itertools.imap object at 0x1005c3990>
>>> list(_)
[0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5]

সংক্ষিপ্ত, হ্যাঁ সরল? এটি কী করছে তা বোঝার জন্য এটি দীর্ঘ সমাধানের চেয়ে দীর্ঘতর ব্যাখ্যা প্রয়োজন।
টেকহেইড

এটি ভাসমান পয়েন্ট সংগ্রহের ত্রুটির পরিচয় দেয়। পরিবর্তে শেষে ভাগ করুন।
জিন-ফ্রান্সোইস ফ্যাব্রে

1
@ জিন-ফরাসোইসফ্যাব্রে উভয় পদ্ধতিই অসম্পূর্ণ - শেষে ভাগ করা বড় সংখ্যার জন্য উপচে পড়বে, সমাধানটি ডেটা (এবং ব্যবহারের ক্ষেত্রে) এর উপর নির্ভর করে।
সিজেড

2

অনেকগুলি সমাধান, তবে আমার প্রিয় এখনও অনুপস্থিত:

>>> import numpy as np
>>> arr = np.array([1,2,3,4,5])

একটি নমপি অ্যারে তালিকার চেয়ে খুব বেশি আলাদা নয় (এই ব্যবহারের ক্ষেত্রে) আপনি সংখ্যার মতো অ্যারে ব্যবহার করতে পারেন:

>>> ( arr[:-1] + arr[1:] ) / 2.0
[ 1.5  2.5  3.5  4.5]

সম্পন্ন!

ব্যাখ্যা

অভিনব সূচকগুলির অর্থ এটি: [1:]1 থেকে শেষ পর্যন্ত সমস্ত উপাদান অন্তর্ভুক্ত (এইভাবে উপাদান 0 বাদ [:-1]দিচ্ছে ), এবং শেষটি ব্যতীত সমস্ত উপাদান রয়েছে:

>>> arr[:-1]
array([1, 2, 3, 4])
>>> arr[1:]
array([2, 3, 4, 5])

সুতরাং এই দুটি যুক্ত করা আপনাকে এলেমেনস (1 + 2), (2 + 3) এবং আরও অনেকগুলি সমন্বিত একটি অ্যারে দেয়। আমি এর দ্বারা ভাগ করছি 2.0না, 2কারণ অন্যথায় পাইথন বিশ্বাস করে যে আপনি কেবল পূর্ণসংখ্যা ব্যবহার করছেন এবং বৃত্তাকার পূর্ণসংখ্যার ফলাফল তৈরি করবেন।

অদ্ভুত ব্যবহারের সুবিধা

সংখ্যাগুলির তালিকার চারপাশের লম্পগুলির তুলনায় নম্পি অনেক দ্রুত হতে পারে । আপনার তালিকাটি কত বড় তার উপর নির্ভর করে দ্রুততার কতগুলি আদেশ। এছাড়াও, এটি অনেক কম কোড এবং কমপক্ষে আমার কাছে এটি পড়া সহজ। আমি সমস্ত গ্রুপের সংখ্যার জন্য নিম্পী ব্যবহার না করে অভ্যাস তৈরি করার চেষ্টা করছি এবং এটি অন্য সমস্ত লুপ এবং লুপ-ইন-লুপগুলির মধ্যে একটি বিশাল উন্নতি otherwise


1

আমি কেবল মানচিত্র সহ একটি ল্যাম্বডা ব্যবহার করব ()

a = [1,2,3,4,5,6,7,8,9,10]
b = map(lambda x, y: (x+y)/2.0, fib[:-1], fib[1:])
print b

1

whileফলাফল পেতে আমি একটি লুপ ব্যবহার করি :

i = 0
while i < len(a)-1:
   result = (a[i]+a[i+1])/2
   print result
   i +=1

1

তালিকার উপাদানগুলির মধ্য দিয়ে লুপ করুন এবং মোটের মতো এটি আপডেট করুন:

def sum(a):
    total = 0
    index = 0
    while index < len(a):
        total = total + a[index]
        index = index + 1
    return total

1

কার্ল নচেটেলকে ধন্যবাদ আমি আপনার প্রশ্নটি বুঝতে সক্ষম হয়েছি। আমার ব্যাখ্যা:

  1. I এবং i + 1 উপাদানটির গড় সহ আপনি একটি নতুন তালিকা চান।
  2. আপনি তালিকার প্রতিটি উপাদান যোগ করতে চান।

বেনামে ফাংশন (যেমন লাম্বদা ফাংশন) ব্যবহার করে প্রথম প্রশ্ন:

s = lambda l: [(l[0]+l[1])/2.] + s(l[1:]) if len(l)>1 else []  #assuming you want result as float
s = lambda l: [(l[0]+l[1])//2] + s(l[1:]) if len(l)>1 else []  #assuming you want floor result

দ্বিতীয় প্রশ্নও বেনামে ফাংশন ব্যবহার করে (যেমন লাম্বদা ফাংশন):

p = lambda l: l[0] + p(l[1:]) if l!=[] else 0

উভয় প্রশ্ন একক লাইনের কোডে একত্রিত:

s = lambda l: (l[0]+l[1])/2. + s(l[1:]) if len(l)>1 else 0  #assuming you want result as float
s = lambda l: (l[0]+l[1])/2. + s(l[1:]) if len(l)>1 else 0  #assuming you want floor result

আপনার প্রয়োজন অনুসারে সবচেয়ে উপযুক্ত এমনটি ব্যবহার করুন


1

পুনরাবৃত্তি ব্যবহার করে আপনি একই কাজ করতে পারেন:

পাইথন স্নিপেট:

def sumOfArray(arr, startIndex):
    size = len(arr)
    if size == startIndex:  # To Check empty list
        return 0
    elif startIndex == (size - 1): # To Check Last Value
        return arr[startIndex]
    else:
        return arr[startIndex] + sumOfArray(arr, startIndex + 1)


print(sumOfArray([1,2,3,4,5], 0))

0

একটি তালিকা বোধগম্য ব্যবহার করার চেষ্টা করুন। কিছুটা এইরকম:

new_list = [(old_list[i] + old_list[i+1])/2 for i in range(len(old_list-1))]

@ রাফা এটি একটি কর্মক্ষম (যদি আমরা কেবল শেষের প্রথম বন্ধনীগুলি ঠিক করি - তবে হওয়া উচিত range(len(old_list) - 1)) তবে পাইথনিস্টাস সাধারণত 'রেঞ্জ' এবং 'লেন' এর সংমিশ্রণে ভ্রূণু হয়। "এটি করার একমাত্র উপায় থাকতে হবে" এর একটি ছদ্মবেশ হ'ল "স্ট্যান্ডার্ড লাইব্রেরি আপনাকে কুৎসিত জিনিসগুলি এড়ানোর জন্য একটি উপায় সরবরাহ করে"। পরোক্ষ পুনরাবৃত্তি - সংখ্যার ক্রমকে পুনরাবৃত্তি করা, যাতে আপনি যে সংখ্যাগুলি পুনরায় পুনরাবৃত্তি করতে চান তা সূচকে এই সংখ্যাগুলি ব্যবহার করতে পারেন - এটি একটি কুশ্রী জিনিস।
কার্ল নচেটেল

0

Itertools এর চেতনায়। জোড়াযুক্ত রেসিপি থেকে অনুপ্রেরণা।

from itertools import tee, izip

def average(iterable):
    "s -> (s0,s1)/2.0, (s1,s2)/2.0, ..."
    a, b = tee(iterable)
    next(b, None)
    return ((x+y)/2.0 for x, y in izip(a, b))

উদাহরণ:

>>>list(average([1,2,3,4,5]))
[1.5, 2.5, 3.5, 4.5]
>>>list(average([1,20,31,45,56,0,0]))
[10.5, 25.5, 38.0, 50.5, 28.0, 0.0]
>>>list(average(average([1,2,3,4,5])))
[2.0, 3.0, 4.0]

0
n = int(input("Enter the length of array: "))
list1 = []
for i in range(n):
    list1.append(int(input("Enter numbers: ")))
print("User inputs are", list1)

list2 = []
for j in range(0, n-1):
    list2.append((list1[j]+list1[j+1])/2)
print("result = ", list2)

0

একটি সহজ উপায় হ'ল ইটার_টুলস ক্রমটি ব্যবহার করা

# If you are given a list

numList = [1,2,3,4,5,6,7]

# and you are asked to find the number of three sums that add to a particular number

target = 10
# How you could come up with the answer?

from itertools import permutations

good_permutations = []

for p in permutations(numList, 3):
    if sum(p) == target:
        good_permutations.append(p)

print(good_permutations)

ফলাফল হলো:

[(1, 2, 7), (1, 3, 6), (1, 4, 5), (1, 5, 4), (1, 6, 3), (1, 7, 2), (2, 1, 7), (2, 3, 
5), (2, 5, 3), (2, 7, 1), (3, 1, 6), (3, 2, 5), (3, 5, 2), (3, 6, 1), (4, 1, 5), (4, 
5, 1), (5, 1, 4), (5, 2, 3), (5, 3, 2), (5, 4, 1), (6, 1, 3), (6, 3, 1), (7, 1, 2), 
(7, 2, 1)]

আদেশের বিষয়টি বিবেচনা করুন - 1, 2, 7 অর্থ 2, 1, 7 এবং 7, 1, 2 হিসাবেও দেখানো হয়েছে a আপনি একটি সেট ব্যবহার করে এটি হ্রাস করতে পারেন।


0

পাইথন ৩.৮-তে নতুন অ্যাসাইনমেন্ট অপারেটর ব্যবহার করা যেতে পারে

>>> my_list = [1, 2, 3, 4, 5]
>>> itr = iter(my_list)
>>> a = next(itr)
>>> [(a + (a:=x))/2 for x in itr]
[1.5, 2.5, 3.5, 4.5]

aতালিকার আগের মানটির একটি চলমান রেফারেন্স , সুতরাং এটি তালিকার প্রথম উপাদানটিতে আরম্ভ করা হয় এবং তালিকার বাকী অংশে পুনরাবৃত্তি ঘটে , আপডেট করেa প্রতিটি পুনরাবৃত্তিতে এটি ব্যবহারের পরে হয়।

একটি সুস্পষ্ট পুনরাবৃত্তকারী ব্যবহার করে তালিকার অনুলিপি তৈরির প্রয়োজন এড়াতে ব্যবহৃত হয় my_list[1:]


-3

নিম্নলিখিত চেষ্টা করুন -

mylist = [1, 2, 3, 4]   

def add(mylist):
    total = 0
    for i in mylist:
        total += i
    return total

result = add(mylist)
print("sum = ", result)

2
একটি নতুন উত্তর বিদ্যমান উত্তরগুলির চেয়ে স্বতন্ত্রভাবে আলাদা হওয়া উচিত। এছাড়াও, আপনার sumফাংশনটি অন্তর্নির্মিত sumআচরণ বা নাম থেকে আলাদা নয় । আপনি আসলে আপনার উত্তর থেকে ফাংশন সংজ্ঞা মুছতে পারেন এবং এটি এখনও কার্যকর হবে।
নওম্যানন

আপনি কি এখনই চেক করতে পারেন
সাই জি

2
আপনি আপনার উত্তর উন্নতি করছি যে আমি প্রশংসা! পরিবর্তনশীল নামগুলি আরও বর্ণনামূলক এবং বিল্ট-ইনগুলিকে ছায়া দেয় না। তবে মৌলিক সমস্যাগুলি এখনও রয়েছে: উপরের স্ট্যাকওভারফ্লো.com/a/35359188/733092 দ্বারা ইতিমধ্যে লুপ পদ্ধতির সরবরাহ করা হয়েছিল , এবং ফাংশনটি অন্তর্নির্মিতের সাথে অনর্থকsum । প্রশ্নের সঠিক উত্তর দেওয়ার জন্য আপনি একটি পরীক্ষায় একটি এ পেতে চাইবেন, তবে স্ট্যাকওভারফ্লো উত্তরগুলিও এই পৃষ্ঠায় উপস্থিত লোকদের পক্ষে দরকারী হওয়া উচিত, এবং সদৃশ উত্তরগুলি নয় are
নওম্যানন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.